Prečo SonarQube: Úvod do analýzy statického kódu
Odkedy začal vývoj softvéru, nastal veľký chaos a ľudia sa vždy pýtajú, či sa to robí správne? Dostávame kombináciu odpovedí:
Ten najstarší: No, zostavuje
Zdá sa, že to funguje
Univerzálny favorit: Používatelia sa nesťažujú (Kým sa používateľ nezačne sťažovať alebo kým nebudeme musieť pridať novú funkciu, potom môžeme zistiť, ako dobre sme to urobili)
Najnovšia odpoveď: Automatizované testovacie prípady (Ako zistíte, či máte dostatok testov, a okrem toho aj to, čo sa nemôže týkať testov)
Ako hodnotíme kvalitu kódu a vývojára, ktorý kód napísal? Je dosť ľahké vyhodnotiť továrnych robotníkov (to, čo sa vyrába v prijateľnej kvalite), právnikov (vyhrané prípady) atď.
Na to sa dá odpovedať, ak dokážeme zmerať kvalitu softvéru. Kvalitu softvéru je možné ľahko definovať pomocou abstrakcií, ich skúmania z rôznych perspektív a hodnotenia v rôznych dimenziách
Získajte praktické skúsenosti s analýzou kódu Satic od živých odborníkov na Školenie obchodného analytika
Poďme sa otestovať a uvidíme, či to dokážeme prečítať:
Cdnuolt blveiee taht I cluod aculaclty uesdnatnrd waht I was rdgnieg. Phaonmneal pweor of hmuan mnid. Nie je to možné, pokiaľ ide o lietadlá, ale hlavne o to, aby to bolo päsťou, a naopak, aby to bolo v prvom rade. Rset môže byť celkom nudný a môžete si ho posedieť a prehltnúť. Tihs je bcuseae huamn mnid deos nezvyšoval ervey lteter ostrovom istlef, ale wrod ako wlohe.
Predchádzajúci text neobsahuje správne napísané jediné slovo, ale ukazuje sa, že je čitateľný. Z pohľadu produktu by niekto mohol podporiť, že hoci je text chybný, robí svoju prácu, pretože dokáže zostať zrozumiteľný. To však má vedľajší účinok, ktorý zhoršuje zážitok z konečného čítania, čo si vyžaduje ďalšie úsilie pri rekonštrukcii slov a fráz. Čitateľ podvedome zdôrazňuje svoju myseľ v snahe prispôsobiť sa a dešifrovať popletené slová. Na druhej strane, redaktor poverený vylepšením alebo doplnením textu by sa musel vyrovnať s touto neštandardnou praxou písania, ktorá zdržiava celý proces.
Prepnite poškodený text na zdrojový kód softvérového produktu. Čitateľ je teraz koncovým používateľom produktu a editor vývojárom. Obaja prežívajú kvalitu produktu odlišne, každý zo svojich vlastných názorov. Koncový používateľ z funkčného hľadiska, zatiaľ čo vývojár zo štrukturálneho.
Meranie kvality softvéru je kvantitatívny proces, ktorý sumarizuje hodnoty vážených atribútov, ktoré čiastočne opisujú špecifické vlastnosti softvéru. Pre každú charakteristiku je definovaný súbor takýchto merateľných atribútov.
Teraz je otázkou, aké sú vlastnosti softvéru? No môže to byť:
Či bolo kódovanie vykonané podľa konkrétnej konvencie
Dodržiavanie známych/osvedčených osvedčených postupov a vyhýbanie sa známym/zavedeným zlým postupom
Existujú nejaké potenciálne chyby a problémy s výkonom, chyby zabezpečenia
Existuje nejaký duplicitný kód
Logika kódu je veľmi zložitá
Či má verejné API dobrú dokumentáciu a komentáre
Či má kód jednotkové testy
Či sa kód riadi dobrými zásadami dizajnu a architektúry
Ako definujeme zodpovedajúce atribúty?
Priradiť váženú hodnotu
Blokovač 5
Kritický 4
Major 3
Menšia 2
Informácie 1
Potom, čo sme definovali vlastnosti softvéru, nás napadne ďalšia otázka, ako ho automaticky presadíme? Odpoveď spočíva v statickej analýze kódu.
** Analýza statického kódu
**
Analýza statického kódu je zbierka algoritmov a techník používaných na analýzu zdrojového kódu s cieľom automaticky nájsť potenciálne chyby alebo nesprávne postupy kódovania. Táto myšlienka je v zásade podobná varovaniam kompilátora (ktoré môžu byť užitočné pri hľadaní chýb kódovania), ale posunúť túto myšlienku o krok ďalej a nájsť chyby, ktoré sa tradične vyskytujú pomocou techník ladenia za behu, ako je testovanie.
Analýza statického kódu, bežne nazývaná aj testovanie v bielom boxe, sa zameriava na aplikácie v iných ako runtime prostrediach. Je to jediná osvedčená metóda, ktorá pokrýva celú základňu kódu a identifikuje všetky zraniteľné vzorce. Analýza statického kódu sa tiež považuje za spôsob automatizácie procesu kontroly kódu.
Windows 10 asp.net strojový účet
Úlohy vyriešené softvérom na analýzu statického kódu je možné rozdeliť do 3 kategórií:
** Zisťovanie chýb v programoch
**
Odporúčania pre formátovanie kódu. Niektoré statické analyzátory vám umožňujú skontrolovať, či zdrojový kód zodpovedá štandardu formátovania kódu prijatému vo vašej spoločnosti
Výpočet metrík. Softvérové metriky sú meradlom, ktoré vám umožňuje získať číselnú hodnotu nejakej vlastnosti softvéru alebo jeho špecifikácií
Existuje mnoho nástrojov na statickú analýzu. Checkstyle, PMD a FindBugs sú však známe a používajú sa vo väčšine projektov
**
Kontrolný štýl **
Checkstyle je nástroj s otvoreným zdrojovým kódom, ktorý môže pomôcť presadiť štandardy kódovania a osvedčené postupy, s osobitným dôrazom na konvencie kódovania. Checkstyle pokrýva niektoré funkcie analýzy statického kódu (takmer rovnakým spôsobom ako PMD a Findbugs), budeme sa však zameriavať hlavne na zisťovanie a presadzovanie konvencií kódovania pomocou Checkstyle.
**
Hlavné zameranie: konvencie
PMD
PMD je nástroj na analýzu statického kódu, ktorý je schopný automaticky detekovať široký rozsah potenciálnych chýb a nebezpečný alebo neoptimalizovaný kód (nesprávne postupy). Zatiaľ čo iné nástroje, ako napríklad Checkstyle, môžu overovať, že sa dodržiavajú konvencie a štandardy kódovania, PMD sa zameriava viac na preventívne zisťovanie chýb (zabezpečenie dodržiavania osvedčených postupov). Dodáva sa s bohatou a vysoko konfigurovateľnou sadou pravidiel a môžete ľahko nakonfigurovať, ktoré konkrétne pravidlá by sa mali používať pre daný projekt.
Typ zlých praktík pozostáva zo známeho správania, ktoré v priebehu času takmer systematicky vedie k problémom. Tu je niekoľko príkladov zlých praktík:
Chytenie výnimky bez toho, aby ste čokoľvek urobili
Mať mŕtvy kód
Príliš veľa zložitých metód
Priame používanie implementácií namiesto rozhraní
Implementácia metódy hashcode () bez metódy not equals (Object object)
Synchronizácia pomocou Boolean (môže viesť k zablokovaniu)
Môže odhaliť vnútornú reprezentáciu vrátením odkazu na premenlivý objekt
Hlavné zameranie: Zlé praktiky
** FindBugs
FindBugs je ďalší nástroj pre statickú analýzu pre Javu, v niektorých ohľadoch podobný Checkstyle a PMD, ale s celkom iným zameraním. FindBugs sa nezaoberá formátovaním alebo kódovaním a len okrajovo sa zaujíma o osvedčené postupy: v skutočnosti sa zameriava na zisťovanie potenciálnych chýb a problémov s výkonom. Ich nájdenie je veľmi dobré a dokáže odhaliť mnoho typov bežných, ťažko dostupných chýb. FindBugs je skutočne schopný detekovať celkom iný súbor problémov ako PMD alebo Checkstyle s relatívne vysokým stupňom presnosti. Ako taký môže byť užitočným doplnkom vášho súboru nástrojov pre statickú analýzu.
**
Hlavné zameranie: Možné chyby
HP Fortify
Podľa webových stránok HP Fortify -
Analyzátor statického kódu HP Fortify pomáha overiť, či je váš softvér dôveryhodný, znižuje náklady, zvyšuje produktivitu a implementuje osvedčené postupy bezpečného kódovania ...
** Kľúčové vlastnosti
Znižuje obchodné riziko identifikáciou zraniteľností, ktoré predstavujú najväčšiu hrozbu
Opakovateľným procesom rýchlo identifikujte a odstráňte zneužiteľné zraniteľné miesta
Znižuje náklady na vývoj identifikáciou zraniteľností na začiatku SDLC
Vzdeláva vývojárov v bezpečných postupoch kódovania počas ich práce
Spojuje vývojové a bezpečnostné tímy s cieľom nájsť a opraviť problémy so zabezpečením
Hlavné zameranie: Chyby zabezpečenia
** SonarQube
SonarQube zbiera a analyzuje zdrojový kód, meria kvalitu a poskytuje správy pre vaše projekty. Kombinuje nástroje statickej a dynamickej analýzy a umožňuje nepretržité meranie kvality v priebehu času. SonarQube kontroluje a vyhodnocuje všetko, čo ovplyvňuje našu základňu kódu, od drobných podrobností o štýle až po kritické chyby návrhu, čo umožňuje vývojárom prístup a sledovanie údajov analýzy kódu od chýb v štýle, potenciálnych chýb a chýb kódu až po neefektivitu návrhu, duplikáciu kódu. , nedostatok pokrytia testami a nadmerná zložitosť. Platforma Sonar analyzuje zdrojový kód z rôznych aspektov, a preto sa podrobne zaoberá vašim kódom vrstvu po vrstve, pričom prechádza z úrovne modulu na úroveň triedy. Na každej úrovni SonarQube vytvára metrické hodnoty a štatistiky, ktoré odhaľujú problematické oblasti zdroja, ktoré si vyžadujú kontrolu alebo zlepšenie.
Prečo SonarQube
Môžete sa čudovať, či SonarQube používa existujúce, osvedčené nástroje, tak prečo ho vôbec používať? Tieto nástroje stačí nakonfigurovať ako doplnok na serveri CI a máme hotovo. Nie nevyhnutne, existuje veľa výhrad.
V súčasnosti nástroje CI neobsahujú doplnok, ktorý by ich všetky hral spoločne
Nástroje CI odteraz nemajú puginy, ktoré by poskytovali pekné hĺbkové funkcie, ako to robí SonarQube
Doplnky CI nehovoria o celkovej hodnote zhody
Doplnky CI neposkytujú manažérsku perspektívu
V súčasnosti neexistuje žiadny doplnok CI pre problémy s dizajnom/architektúrou
Neposkytuje informačný panel pre celkovú kvalitu projektov
**Vlastnosti:
**
SonarQube vám nielen ukáže, čo je zle. Ponúka tiež nástroje na správu kvality, ktoré vám aktívne pomôžu uviesť ho na správnu mieru
Zdá sa, že obchodní konkurenti spoločnosti SonarQube zameriavajú svoju definíciu kvality predovšetkým na chyby a zložitosť, zatiaľ čo ponuky spoločnosti SonarQube pokrývajú to, čo jej tvorcovia nazývajú sedem osí kvality.
SonarQube rieši nielen chyby, ale aj pravidlá kódovania, pokrytie testom, duplikácie, dokumentáciu API, zložitosť a architektúru a poskytuje všetky tieto podrobnosti na hlavnom paneli.
Poskytuje vám aktuálny prehľad o kvalite vášho kódu dnes a trendoch oneskorenia (čo sa už pokazilo) a vedenia (čo sa v budúcnosti pravdepodobne pokazí)
Poskytuje vám metriky, ktoré vám pomôžu urobiť správne rozhodnutie. V takmer každom odvetví seriózni lídri sledujú metriky. Či už ide o výrobné chyby a odpad, tržby a príjmy alebo baseballové zásahy a RBI, existujú metriky, ktoré vám napovedia, ako sa vám darí: či sa vám celkovo darí alebo sa zlepšujete alebo zhoršujete.
SonarQube skutočne vyniká tým, že poskytuje nielen metriky a štatistiky o vašom kóde, ale prekladá tieto nepopisné hodnoty do skutočných obchodných hodnôt, akými sú riziko a technický dlh. SonarQube sa nevenuje len hlavným vývojárom a programátorom, ale aj projektovým manažérom a ešte vyšším manažérskym úrovniam vďaka aspektu riadenia, ktorý ponúka. Tento koncept je ešte posilnený vylepšenými možnosťami hlásenia spoločnosti SonarQube a viacerými pohľadmi na zdrojový kód z rôznych perspektív.
Z manažérskeho hľadiska transparentný a nepretržitý prístup k historickým údajom umožňuje manažérovi klásť správne otázky.
Poznámka: SonarQube v žiadnom prípade nekonkuruje žiadnemu z vyššie uvedených nástrojov statickej analýzy, ale skôr ich dopĺňa a funguje s nimi veľmi dobre. V skutočnosti prestane fungovať, ak tieto nástroje statickej analýzy (Checkstyle, PMD a FindBugs) neexistujú.
Získajte viac informácií od živých odborníkov na Kurz obchodného analytika