კოდის ხარისხის სკანერის აპლიკაციები

კოდის ხარისხი და Code Security ორ სხვადასხვა ინსტრუმენტში ცხოვრობენ. მათ ეს არ უწევთ.

საინჟინრო გუნდების უმეტესობა ერთი და იგივე კოდის ბაზაზე ორ ცალკეულ საუბარს აწარმოებს. ერთი უსაფრთხოებას ეხება: არსებობს თუ არა SQL ინექციის რისკი, მყარი კოდირებული საიდუმლო, ექსპლუატაციური დამოკიდებულება. მეორე კი - შენარჩუნებადობაზე: არის თუ არა ეს ფუნქცია ძალიან რთული, არის თუ არა ეს კოდი სამჯერ დუბლირებული, არის თუ არა მკვდარი კოდი, რომლის წაშლასაც ვერავინ ბედავს.

ეს საუბრები, როგორც წესი, სხვადასხვა ინსტრუმენტებში მიმდინარეობს, სხვადასხვა გუნდის მიერ, სხვადასხვა გრაფიკით. უსაფრთხოების სკანერი აფიქსირებს, თუ რა არის ექსპლუატაციისთვის ვარგისი. ცალკე, ხარისხიანი ინსტრუმენტი, რომელსაც ხშირად დამოუკიდებლად ყიდულობენ და მართავენ, აფიქსირებს, თუ რა არის ძვირადღირებული შესანახად. ორი ლიცენზია, ორი dashboards, ორი პარსერი, რომლებიც ერთსა და იმავე აბსტრაქტულ სინტაქსურ ხეზე დადიან ორ განსხვავებულ კითხვაზე პასუხის გასაცემად.

ამ გაყოფას თავისი ფასი აქვს. საიმედოობის დეფექტები (ისეთი დეფექტები, რომლებიც იწვევენ გაშვების დროს ჩავარდნებს და არა დარღვევებს) არ ექვემდებარება იგივე დახარისხების დისციპლინას, როგორც უსაფრთხოების აღმოჩენები, რადგან ისინი უსაფრთხოების გუნდის ფარგლებს გარეთ მდებარეობს. dashboardდა როდესაც გუნდს უკვე აქვს სტატიკური ანალიზის ძრავა, რომელიც უსაფრთხოების მიზნით აანალიზებს ყველა ფაილს, მეორე, დაუკავშირებელი ძრავის დაყენება მხოლოდ კოდის ხარისხის შესამოწმებლად ზედმეტი სამუშაოა საერთო სარგებლის გარეშე.

რატომ არის კოდის ხარისხი მნიშვნელოვანი (და რით განსხვავდება ის Code Security)

კოდის ხარისხი და code security უპასუხეთ ორ განსხვავებულ კითხვას. Code security კითხვა: შეიძლება თუ არა ამ კოდის გამოყენება? კოდის ხარისხი კითხვას სვამს: შეიძლება თუ არა ამ კოდის შენარჩუნება? ფუნქცია შეიძლება იყოს იდეალურად უსაფრთხო და მაინც იყოს ხუთასი ხაზიანი ჩახლართული, რომლის შეხებაც არავის სურს, ხოლო კარგად ორგანიზებულ, ადვილად წასაკითხ მოდულს მაინც შეიძლება ჰქონდეს კრიტიკული ინექციის ხარვეზი. არცერთი დისციპლინა არ ცვლის მეორეს.

კოდის ხარისხის იგნორირების ფასი დარღვევად არ აისახება. ის უფრო ნელა იჩენს თავს: ახალ თანამშრომელს უსაფრთხო ცვლილებისთვის ორი დღის ნაცვლად ორი კვირა სჭირდება, რუტინულ ფუნქციას სამი სპრინტი სჭირდება, რადგან ვერავინ იწინასწარმეტყველებს, თუ რა შეცდომას გამოიწვევს დუბლირებული ბლოკი სხვაგან, მორიგე ინჟინერი ერთ საათს ხარჯავს დაზიანებული კოდის შეცდომის ძიებაში, რომელიც ერთი წლის წინ უნდა წაეშალა. ეს ყველაფერი უსაფრთხოების შეტყობინებას არ რთავს. ეს ყველაფერი სიჩქარით აისახება და როდესაც ის სპრინტ რეტრო ვერსიაში ხილული გახდება, მისი გამოსწორება უკვე ძვირი ჯდება.

სწორედ ეს ეხება ხარისხისადმი ისეთივე სიზუსტით მიდგომას, როგორც უსაფრთხოებისადმი: არა იმიტომ, რომ კოდის სუნი საფრთხეს წარმოადგენს, არამედ იმიტომ, რომ მოვლა-პატრონობის ვალის დაუკვირვებლად დაგროვება სწორედ ისაა, თუ როგორ იქცევა კოდის ბაზა ფუნქციების გაქრობის ადგილად.

უკეთესი გზა: ერთი ძრავა, ორი წესების კატალოგი

Xygeni-ის კოდის ხარისხის სკანერი აანალიზებს საწყისი კოდის მდგრადობასა და საიმედოობის დეფექტებს: კოდის სუნი, სირთულის დარღვევები, მკვდარი კოდი და დუბლირება - შაბლონები, რომლებიც არ იწვევს დარღვევას, მაგრამ იწვევს გათიშვას, რეგრესიებს და ნელა მომუშავე გუნდებს.

გამორჩეული დიზაინის არჩევანი არქიტექტურულია და არა კოსმეტიკური. Code Quality-ს სტატიკური ანალიზის ძრავა ქსიგენი SAST სკანერიიგივე პარსერები, იგივე AST კონსტრუქცია, იგივე ფაილის აღმოჩენა. ის, რაც მას არ აქვს საერთო, არის წესების კატალოგი. ხარისხის წესები ეხება ხარისხს და არა უსაფრთხოებას, ხოლო დასკვნები ჩანს Xygeni პლატფორმის ხარისხის სპეციალურ განყოფილებაში, რომელიც ცალკე ინახება. SAST და უსაფრთხოების რისკების დანარჩენი ცხრილები.

შედეგი: გუნდები ერთი და იგივე ძირითადი ანალიზის შედეგად იღებენ როგორც მხარდაჭერის, ასევე უსაფრთხოების ხედვას, ორი განსხვავებული პრობლემის ერთ ხმაურიან პრობლემაში გაერთიანების გარეშე. dashboard.

ორი გზა თქვენს მოწყობილობაში ხარისხის სიგნალის მისაღებად Pipeline

ყველა „კოდის ხარისხის“ ფუნქცია ერთნაირად არ მუშაობს. ბევრი CI/CD- მშობლიური ხარისხის ინსტრუმენტები აგრეგაციის ფენებია: ისინი თავად არ აანალიზებენ თქვენს კოდს; ისინი იმპორტს უკეთებენ შედეგებს უკვე გაშვებული ლინტერიდან (JavaScript ლინტერი, Python ლინტერი, დუბლიკაციის დეტექტორი), თითოეული ხელახლა ფორმატირებულია საერთო JSON სქემაში და თითოეული ცალკეა დაკავშირებული. pipeline ნაბიჯი. ეს მოქნილია, მაგრამ ეს ნიშნავს, რომ თქვენი ხარისხის სიგნალი მხოლოდ იმდენად თანმიმდევრულია, რამდენადაც ცალკეული ინსტრუმენტები, ფორმატები და მხარდამჭერები გაქვთ ერთად შეკრული, თითოეული ენისთვის.

Xygeni-ის კოდის ხარისხის სკანერი მეორე გზას ირჩევს: ერთი მშობლიური ძრავა, რომელიც უკვე მუშაობს უსაფრთხოებისთვის, გაფართოებულია ხარისხის წესების კატალოგით. არ არის საჭირო თითოეული ენისთვის ლინტერის ინსტალაცია, არ არის საჭირო ანგარიშის ფორმატის გადაფორმატება, არ არის საჭირო ცალკე დავალების შენარჩუნება თითოეული ინსტრუმენტისთვის. თქვენ გაქვთ ერთი ბრძანება, ერთი თანმიმდევრული სიმძიმის მოდელი და ერთი dashboard განყოფილებაში, რადგან ანალიზი თავიდანვე არასდროს ყოფილა დაყოფილი ინსტრუმენტებს შორის.

როგორ მუშაობს?

კოდის ხარისხი მუშაობს როგორც საკუთარი CLI ბრძანება:

xygeni quality -d <directory> [options]
(xygeni code-quality works as an alias.)

ის თავის ოფციონის მოდელს იზიარებს ქსიგენი sast, ამგვარად, ყველა, ვინც უკვე იყენებს Xygeni-ის უსაფრთხოების სკანერს, მაშინვე ამოიცნობს ინტერფეისს:

არჩევანიᲠას აკეთებს
-d, --dirანალიზისთვის განკუთვნილი დირექტორია
--detectorsგაუშვით კონკრეტული დეტექტორის ID-ები, ან სიმძიმე და მასზე მეტი ყველაფერი
--fail-onმოცემული სიმძიმის დროს ნულოვანიდან განსხვავებული გასვლა, მაგალითად CI/CD კარიბჭე
--baselineშეადარეთ საწყის ნიშნულს და დააბრუნეთ მხოლოდ ახალი დასკვნები
--uploadშედეგების გაგზავნა Xygeni პლატფორმაზე

კოდის ხარისხის ანგარიშის გენერირება

სკანირება წარმოქმნის კოდის ხარისხის ანგარიშს, რომლის გაგზავნაც შეგიძლიათ პლატფორმაზე, ექსპორტირება JSON-ის სახით CI არტეფაქტებისთვის ან გუნდის ხელმძღვანელს გადაცემა მათი მიცემის გარეშე. dashboard წვდომა. ორივე ერთსტრიქონიანი ბრძანებაა:

# სკანირება და ატვირთვა პირდაპირ Xygeni პლატფორმაზე

xygeni quality -n MyProject –ატვირთვა

# კოდის ხარისხის ანგარიშის ექსპორტი JSON ფორმატში, მხოლოდ კრიტიკული დასკვნებით

ქსიგენის ხარისხი -d –დეტექტორები კრიტიკულია –ფორმატი json –გამომავალი ხარისხი.json

ატვირთვის შემდეგ, იგივე კოდის ხარისხის ანგარიში ავსებს ხარისხის განყოფილებას. dashboardფილტრირებადი, თითოეული დასკვნისთვის სლაიდშოუ დეტალებით, საბაზისო მაჩვენებლებით და იგივე ანგარიშგების ქცევით, რასაც გუნდები უკვე იყენებენ SAST.

უსაფრთხოების სკანირებასთან ერთად, გაშვების ხარისხი

გუნდებისთვის, რომლებსაც სურთ ორივე სიგნალი ერთი გადასვლიდან, SAST სკანერი იღებს –შეიცავს ხარისხს დროშა:

ქსიგენი sast -დ –შეიცავს ხარისხს

იმის გამო, რომ SAST და კოდის ხარისხი იზიარებს პარსერის ეტაპს, ეს უფრო ეფექტურია, ვიდრე ორი სკანერის ზედიზედ გაშვება. ის წარმოქმნის ორ ცალკეულ ანგარიშს, უსაფრთხოების და ხარისხის, და თითოეული მაინც თავისებურად ჯდება. dashboard სექცია. დროშა ცვლის სკანირების შესრულების წესს და არა შედეგების ორგანიზების წესს.

სკანირება კავშირის გარეშე

ჰაერის უფსკრულიანი გარემოსთვის ან CI გამშვები სისტემებისთვის, რომლებსაც არ აქვთ Xygeni პლატფორმაზე წვდომა, ხარისხიანი სკანირება შეიძლება ლოკალურად შესრულდეს და მოგვიანებით აიტვირთოს:

ქსიგენის ხარისხი -d -n ჩემი პროექტი

# …მოგვიანებით, კავშირგაბმულობის მქონე ჰოსტისგან:

xygeni ანგარიშის ატვირთვა -n MyProject -r depsdoctor-quality.json

დასკვნები ხარისხის განყოფილებაში ზუსტად ისე ხვდება, როგორც პირდაპირი სკანირების შემთხვევაში: იგივე კლასიფიკაცია, იგივე პოლიტიკა, იგივე საბაზისო ქცევა.

რატომ არის მნიშვნელოვანი ხარისხის უსაფრთხოებისგან გამიჯვნა

კოდის სუნის ერთსა და იმავე სიმძიმის სიაში მოთავსება, როგორც ექსპლუატაციური დაუცველობის შემთხვევაში, მარტივი იქნებოდა. Xygeni განზრახ არ აკეთებს ამას. დუბლირებული ფუნქცია და SQL ინექცია ერთი და იგივე სახის რისკს არ წარმოადგენს და მათი ერთნაირად დამუშავება გუნდებს ასწავლის, რომ ან ზედმეტად რეაგირებდნენ შენარჩუნების ხმაურზე, ან არასაკმარისად რეაგირებდნენ რეალურ უსაფრთხოების აღმოჩენებზე. წესების კატალოგების, ანგარიშების და dashboard ხედები ცალკეა, ხოლო ძრავა ქვემოთაა გაზიარებული, რაც ნიშნავს, რომ თითოეული გუნდი იღებს მათთვის მნიშვნელოვან სიგნალს მეორე სტატიკური ანალიზის ინსტრუმენტისთვის გადახდის გარეშე.

სცადეთ: კოდის ხარისხი დღეს ხელმისაწვდომია Xygeni CLI-ის საშუალებით. გუნდები უკვე მუშაობენ ქსიგენი sast შეგიძლიათ დაამატოთ –შეიცავს ხარისხს მათი არსებული pipeline ერთ ხაზზე, არც ახალი ინსტრუმენტის დამატებაა საჭირო, არც მეორე dashboard შემოწმება.

კითხვა-პასუხი

რა არის Xygeni კოდის ხარისხი?

Xygeni Code Quality არის სტატიკური ანალიზის სკანერი, რომელიც აფიქსირებს მხარდაჭერისა და საიმედოობის დეფექტებს, მათ შორის კოდის სუნს, სირთულის დარღვევებს, მკვდარ კოდს და დუბლირებას. ის მუშაობს როგორც საკუთარი ბრძანება (ოქსიგენის ხარისხი) და ანგარიშებს აქვეყნებს Xygeni პლატფორმის ხარისხის სპეციალურ განყოფილებაში, უსაფრთხოების დასკვნებისგან განცალკევებით.

კოდის ხარისხი იგივეა, რაც SAST?

კოდის ხარისხი და SAST იზიარებენ ერთსა და იმავე საბაზისო დამუშავების ძრავას, მაგრამ იყენებენ დამოუკიდებელ წესების კატალოგებს და ქმნიან დამოუკიდებელ ანგარიშებს. SAST ეძებს უსაფრთხოების ხარვეზებს; კოდის ხარისხი ეძებს მხარდაჭერისა და საიმედოობის დეფექტებს.

შემიძლია ერთდროულად ჩავატარო ხარისხიანი სკანირება და უსაფრთხოების სკანირება?

კი. სირბილი ქსიგენი sast -დ –შეიცავს ხარისხს ორივე წესის ერთობლიობას ერთი გავლისას ასრულებს, რაც უფრო ეფექტურია, ვიდრე ორი სკანერის ცალ-ცალკე გაშვება, რადგან ისინი იყენებენ პარსერის ეტაპს. შედეგები მაინც წარმოქმნის ორ ცალკეულ ანგარიშს და გამოჩნდება ორ ცალკეულ ფორმატში. dashboard სექციები.

კოდის ხარისხისთვის ცალკე ლიცენზია მჭირდება?

ხარისხიანი შედეგების ატვირთვისა და სანახავად საჭიროა კოდის ხარისხის უფლება, იგივე, რაც საჭიროა სკანირების გასაშვებად.

შესაძლებელია თუ არა Code Quality-ის ინტერნეტთან წვდომის გარეშე მუშაობა?

დიახ. სკანირება შესაძლებელია ლოკალურად, ამის გარეშე. –ატვირთვა დროშის და შედეგად მიღებული ანგარიშის ატვირთვა მოგვიანებით შესაძლებელია დაკავშირებული ჰოსტიდან, გამოყენებით xygeni-ს ანგარიშის ატვირთვა.

sca-tools-software-composition-analysis-tools
თქვენი პროგრამული უზრუნველყოფის რისკების პრიორიტეტიზაცია, გამოსწორება და დაცვა
მიიღეთ თქვენი უფასო ანგარიში.
საკრედიტო ბარათი არ არის საჭირო.

უზრუნველყავით თქვენი პროგრამული უზრუნველყოფის შემუშავება და მიწოდება

Xygeni Product Suite-თან ერთად