Statesch Analyse - vun Aféierung zu Integratioun

Midd vun endloser Code Iwwerpréiwung oder Debugging, heiansdo denkt Dir un wéi Dir Äert Liewen vereinfacht. A wann Dir e bëssen gesicht hutt, oder zoufälleg drop stéisst, kënnt Dir de magesche Saz gesinn: "Statesch Analyse". Loosst eis kucken wat et ass a wéi et mat Ärem Projet interagéiere kann.

Statesch Analyse - vun Aféierung zu Integratioun
Tatsächlech, wann Dir an enger moderner Sprooch schreift, dann, ouni et emol ze realiséieren, hutt Dir et duerch e statesche Analysator gelaf. D'Tatsaach ass datt all modernen Compiler bitt, och wann e klenge Set vu Warnungen iwwer potenziell Probleemer am Code. Zum Beispill, wann Dir C ++ Code am Visual Studio kompiléiert, kënnt Dir déi folgend gesinn:

Statesch Analyse - vun Aféierung zu Integratioun
An dësem Output gesi mir datt d'Variabel et ginn war ni iwwerall an der Funktioun benotzt. Also a Wierklechkeet hutt Dir bal ëmmer en einfachen statesche Code Analyser benotzt. Wéi och ëmmer, am Géigesaz zu professionnelle Analysatoren wéi Coverity, Klocwork oder PVS-Studio, kënnen d'Warnunge vum Compiler nëmmen eng kleng Gamme vu Probleemer uginn.

Wann Dir net sécher wësst wat statesch Analyse ass a wéi Dir se implementéiert, liesen dësen Artikelfir méi iwwer dës Methodik ze léieren.

Firwat braucht Dir statesch Analyse?

An enger Nossschuel: Beschleunegung a Vereinfachung.

D'statesch Analyse erlaabt Iech vill verschidde Probleemer am Code ze fannen: vu falscher Notzung vu Sproochkonstruktioune bis Schreiffehler. Zum Beispill, amplaz

auto x = obj.x;
auto y = obj.y;
auto z = obj.z;

Dir hutt de folgende Code geschriwwen:

auto x = obj.x;
auto y = obj.y;
auto z = obj.x;

Wéi Dir gesitt, ass et en Tippfeeler an der leschter Zeil. Zum Beispill, PVS-Studio verëffentlecht déi folgend Warnung:

V537 Betruecht d'Korrektheet vun der Benotzung vum 'y' Element ze iwwerpréiwen.

Wann Dir Är Hänn an dëse Feeler wëllt pochen, probéiert e fäerdegt Beispill am Compiler Explorer: *klickt*.

A wéi Dir verstitt, ass et net ëmmer méiglech, direkt op sou Sektiounen vum Code opmierksam ze maachen, an dofir kënnt Dir eng gutt Stonn Debugging sëtzen, froen Iech firwat alles sou komesch funktionnéiert.

Allerdéngs ass dëst kloer e Feeler. Wat wann den Entwéckler suboptimal Code schreift well hien e puer Subtilitéit vun der Sprooch vergiess huet? Oder souguer erlaabt et am Code ondefinéiert Verhalen? Leider sinn esou Fäll komplett allgemeng an de Léiw d'Undeel vun der Zäit gëtt verbruecht fir spezifesch Aarbechtscode ze Debuggéieren, deen Tippfehler, typesch Feeler oder ondefinéiert Verhalen enthält.

Et ass fir dës Situatiounen déi statesch Analyse erschéngt. Dëst ass en Assistent fir den Entwéckler, dee verschidde Probleemer am Code weist an an der Dokumentatioun erklärt firwat et net néideg ass fir dës Manéier ze schreiwen, wat et kann féieren a wéi et fixéiert gëtt. Hei ass e Beispill vu wéi et ausgesäit: *klickt*.

Dir kënnt méi interessant Feeler fannen, déi den Analyser an den Artikelen entdecken kann:

Elo datt Dir dëst Material gelies hutt an iwwerzeegt sidd vun de Virdeeler vun der statescher Analyse, wëllt Dir et vläicht probéieren. Mee wou ufänken? Wéi en neit Tool an Ärem aktuelle Projet integréieren? A wéi d'Equipe him virzestellen? Dir fannt Äntwerten op dës Froen hei ënnen.

Note: Statesch Analyse ersetzt oder annuléiert net sou eng nëtzlech Saach wéi Code Bewäertungen. Et ergänzt dëse Prozess, hëlleft Tippfehler, Ongenauegkeeten a geféierlech Design am Viraus ze bemierken an ze korrigéieren. Et ass vill méi produktiv sech op Code Bewäertungen iwwer Algorithmen a Code Kloerheet ze fokusséieren, anstatt no enger falscher parenthesis ze sichen oder liesen langweileg Verglach Funktiounen.

0. Den Tool kennen ze léieren

Et fänkt alles mat enger Testversioun un. Tatsächlech ass et schwéier ze entscheeden eppes an den Entwécklungsprozess anzeféieren wann Dir den Tool nach ni live gesinn hutt. Dofir ass dat éischt wat Dir maache sollt ass eroflueden Test Versioun.

Wat Dir op dëser Etapp léiert:

  • Wat sinn d'Weeër fir mam Analysator ze interagéieren;
  • Ass den Analyser kompatibel mat Ärem Entwécklungsëmfeld?
  • Wéi eng Problemer ginn et momentan an Äre Projeten?

Nodeems Dir alles installéiert hutt wat Dir braucht, ass dat éischt wat Dir maache sollt ass eng Analyse vum ganze Projet auszeféieren (Windows, Linux, macOS). Am Fall vu PVS-Studio am Visual Studio gesitt Dir en ähnlecht Bild (klickbar):

Statesch Analyse - vun Aféierung zu Integratioun
D'Tatsaach ass datt statesch Analysatoren normalerweis eng grouss Zuel vu Warnunge fir Projete mat enger grousser Codebasis erausginn. Et ass net néideg se all ze fixéieren, well Äre Projet scho funktionnéiert, dat heescht datt dës Probleemer net kritesch sinn. Wéi och ëmmer, Dir Dir kënnt déi interessant Warnungen kucken a korrigéiert se wann néideg. Fir dëst ze maachen, musst Dir d'Ausgab filteren an nëmmen déi zouverlässegst Messagen hannerloossen. Am PVS-Studio Plugin fir Visual Studio gëtt dëst gemaach andeems Dir op Feelerniveauen a Kategorien filtert. Fir déi genaust Ausgang, verloosst nëmmen héich и allgemeng (och klickbar):

Statesch Analyse - vun Aféierung zu Integratioun
Tatsächlech sinn 178 Warnungen vill méi einfach ze gesinn wéi e puer dausend ...

An Tabs mëttel- и Low Dacks ginn et gutt Warnungen, awer dës Kategorien enthalen déi Diagnostik déi manner Genauegkeet (Zouverlässegkeet) hunn. Méi Informatioun iwwer Warnungsniveauen an Optiounen fir ënner Windows ze schaffen fannt Dir hei: *klickt*.

Déi interessantst Feeler erfollegräich iwwerpréift ze hunn (an se erfollegräich korrigéiert) ass et wäert verbleiwen Warnungen ënnerdrécken. Dëst ass néideg fir datt nei Warnungen net ënnert deenen alen verluer goen. Zousätzlech ass e statesche Analysator en Assistent fir de Programméierer, an net eng Lëscht vu Bugs. 🙂

1. Automatisatioun

Nodeems Dir kennt, ass et Zäit Plugins ze konfiguréieren an an CI z'integréieren. Dëst muss gemaach ginn ier Programméierer de statesche Analysator benotzen. D'Tatsaach ass datt de Programméierer vergiessen d'Analyse z'aktivéieren oder guer net wëllt maachen. Fir dëst ze maachen, musst Dir e puer final Iwwerpréiwung vun allem maachen, sou datt net getest Code net an d'allgemeng Entwécklungszweig kommen kann.

Wat Dir op dëser Etapp léiert:

  • Wéi eng Automatisatiounsoptioune bitt de Tool;
  • Ass den Analyser kompatibel mat Ärem Versammlungssystem?

Well perfekt Dokumentatioun net existéiert, musst Dir heiansdo aschreiwen ënnerstëtzen. Dëst ass normal a mir si frou Iech ze hëllefen. 🙂

Loosst eis elo weidergoen op kontinuéierlech Integratioun (CI) Servicer. All Analyser kann an hinnen ëmgesat ginn ouni sérieux Problemer. Fir dëst ze maachen, musst Dir eng separat Bühn an der Pipeline erstellen, déi normalerweis no der Bau- an Eenheetstester läit. Dëst gëtt mat verschiddene Konsol Utilities gemaach. Zum Beispill, PVS-Studio bitt déi folgend Utilities:

Fir Analyse an CI z'integréieren, musst Dir dräi Saache maachen:

  • Installéiert den Analyser;
  • Run Analyse;
  • Resultater liwweren.

Zum Beispill, fir PVS-Studio op Linux (Debian-Base) z'installéieren, musst Dir déi folgend Kommandoen ausféieren:

wget -q -O - https://files.viva64.com/etc/pubkey.txt 
    | sudo apt-key add -
sudo wget -O /etc/apt/sources.list.d/viva64.list 
  https://files.viva64.com/etc/viva64.list
  
sudo apt-get update -qq
sudo apt-get install -qq pvs-studio

Op Systemer déi Windows lafen, gëtt et kee Wee fir den Analyser vum Package Manager z'installéieren, awer et ass méiglech den Analyser vun der Kommandozeil z'installéieren:

PVS-Studio_setup.exe /verysilent /suppressmsgboxes 
/norestart /nocloseapplications

Dir kënnt méi liesen iwwer d'Deployment PVS-Studio op Systemer déi Windows lafen *hei*.

No der Installatioun musst Dir d'Analyse direkt ausféieren. Wéi och ëmmer, et ass recommandéiert dëst nëmmen ze maachen nodeems d'Kompilatioun an d'Tester passéiert sinn. Dëst ass well statesch Analyse typesch duebel sou laang dauert wéi d'Kompilatioun.

Zënter der Startmethod hänkt vun der Plattform a Projet Feature of, wäert ech d'Optioun fir C ++ (Linux) als Beispill weisen:

pvs-studio-analyzer analyze -j8 
                            -o PVS-Studio.log
plog-converter -t errorfile PVS-Studio.log --cerr -w

Den éischte Kommando wäert d'Analyse maachen, an deen zweeten Enveloppenkonvertéiert de Bericht an Textformat, weist en um Bildschierm a gëtt e Retourcode ausser 0 zréck wann et Warnunge gëtt. E Mechanismus wéi dëst ka bequem benotzt ginn fir e Bau ze blockéieren wann et Fehlermeldungen sinn. Allerdéngs kënnt Dir ëmmer de Fändel ewechhuelen -w a blockéiert net eng Versammlung déi Warnungen enthält.

Note: Den Textformat ass onbequem. Et gëtt einfach als Beispill geliwwert. Opgepasst op e méi interessant Berichtformat - FullHtml. Et erlaabt Iech duerch de Code ze navigéieren.

Dir kënnt méi iwwer d'Opstelle vun der Analyse iwwer CI am Artikel liesen "PVS-Studio a kontinuéierlech Integratioun" (Windows) oder "Wéi Ariichten PVS-Studio an Travis CI" (Linux).

Okay, Dir hutt den Analyser um Build Server konfiguréiert. Elo, wann iergendeen net getest Code eropgelueden huet, wäert d'Verifizéierungsstadium feelen, an Dir kënnt de Problem z'entdecken, awer dëst ass net ganz bequem, well et méi effizient ass de Projet ze kontrolléieren net nodeems d'Branchen fusionéiert goufen, awer virun et, op der Pull Ufro Etapp A.

Allgemeng ass d'Opstelle vun enger Pull-Ufro-Analyse net vill anescht wéi den übleche Start vun enger Analyse op CI. Ausser de Besoin fir eng Lëscht vu geännerten Dateien ze kréien. Dës kënnen normalerweis kritt ginn andeems Dir d'Ënnerscheeder tëscht de Filialen mat Git ufroen:

git diff --name-only HEAD origin/$MERGE_BASE > .pvs-pr.list

Elo musst Dir dës Lëscht vun Dateien un den Analyser als Input passéieren. Zum Beispill, am PVS-Studio gëtt dëst mam Fändel ëmgesat -S:

pvs-studio-analyzer analyze -j8 
                            -o PVS-Studio.log 
                            -S .pvs-pr.list

Dir kënnt méi gewuer ginn iwwer d'Analyse vun Pull-Ufroen *hei*. Och wann Äre CI net op der Lëscht vun de Servicer am Artikel ernimmt ass, fannt Dir déi allgemeng Sektioun déi d'Theorie vun dëser Aart vun Analyse gewidmet ass nëtzlech.

Andeems Dir Analyse vun Pull-Ufroen opstellt, kënnt Dir Verpflichtungen blockéieren déi Warnungen enthalen, an doduerch eng Grenz erstellen déi net getest Code net iwwerschreiden kann.

Dëst ass sécherlech alles gutt, awer ech géif gären all Warnungen op enger Plaz gesinn. Net nëmme vum statesche Analysator, awer och vun Eenheetstester oder vum dynamesche Analysator. Et gi verschidde Servicer a Plugins fir dëst. PVS-Studio, zum Beispill, huet Plugin fir Integratioun an SonarQube.

2. Integratioun op Entwéckler Maschinnen

Elo ass et Zäit den Analysator fir alldeeglech Entwécklungsnotzung z'installéieren an ze konfiguréieren. Vun dësem Zäitpunkt hutt Dir scho mat de meeschte Weeër vun der Aarbecht vertraut, sou datt dëst den einfachsten Deel genannt gëtt.

Als déi einfachst Optioun kënnen d'Entwéckler déi néideg Analyser selwer installéieren. Wéi och ëmmer, dëst wäert vill Zäit daueren an se vun der Entwécklung oflenken, sou datt Dir dëse Prozess automatiséiert mat engem Installateur an déi néideg Fändelen. Fir PVS-Studio ginn et verschidden Fändelen fir automatiséiert Installatioun. Wéi och ëmmer, et ginn ëmmer Packagemanager, zum Beispill Chocolatey (Windows), Homebrew (macOS) oder Dosende vu Méiglechkeeten fir Linux.

Da musst Dir déi néideg Plugins installéieren, zum Beispill fir Visual Studio, IDÉI, Rider etc.

3. Deeglech Gebrauch

Op dëser Etapp ass et Zäit e puer Wierder ze soen iwwer Weeër fir den Analysator während deegleche Gebrauch ze beschleunegen. Eng komplett Analyse vum ganze Projet hëlt vill Zäit, awer wéi dacks ännere mir de Code duerch de ganze Projet op eemol? Et gëtt kaum Refactoring déi sou grouss ass datt et direkt déi ganz Codebasis beaflosst. D'Zuel vun de Dateien déi gläichzäiteg geännert ginn ass selten méi wéi eng Dosen, sou datt et Sënn mécht se ze analyséieren. Fir esou eng Situatioun gëtt et inkrementell Analyse Modus. Maacht Iech einfach net Angscht, dëst ass keen anere Tool. Dëst ass e spezielle Modus deen Iech erlaabt nëmmen geännert Dateien an hir Ofhängegkeeten z'analyséieren, an dëst geschitt automatesch nom Gebai wann Dir an enger IDE schafft mat dem Plugin installéiert.

Wann den Analyser Problemer am kierzlech geännerten Code erkennt, mellt hien dëst onofhängeg. Zum Beispill, PVS-Studio erzielt Iech iwwer dëst mat enger Alarm:

Statesch Analyse - vun Aféierung zu Integratioun
Natierlech ass d'Entwéckler soen d'Tool ze benotzen net genuch. Mir mussen hinnen iergendwéi soen wat et ass a wéi et ass. Hei, zum Beispill, sinn Artikelen iwwer e Schnellstart fir PVS-Studio, awer Dir kënnt ähnlech Tutorials fir all Tool fannen dat Dir léiwer:

Esou Artikelen bidden all néideg Informatiounen fir alldeeglechen Gebrauch an huelen net vill Zäit. 🙂

Och op der Bühn vum Tool kennen ze léieren, hu mir vill Warnungen während engem vun den éischte Starten ënnerdréckt. Leider sinn statesch Analysatoren net perfekt, sou datt se vun Zäit zu Zäit falsch Positiver ginn. Et ass normalerweis einfach se z'ënnerdrécken, zum Beispill, am PVS-Studio Plugin fir Visual Studio musst Dir just op ee Knäppchen klickt:

Statesch Analyse - vun Aféierung zu Integratioun
Wéi och ëmmer, Dir kënnt méi maachen wéi se nëmmen ënnerdrécken. Zum Beispill kënnt Dir e Problem mellen fir z'ënnerstëtzen. Wann de falsche Positiv ka korrigéiert ginn, da kënnt Dir an zukünfteg Updates feststellen datt all Kéier manner a manner falsch Positiven spezifesch fir Är Codebase sinn.

No der Integratioun

Also hu mir all Etappe vun der Integratioun vun der statesch Analyse an den Entwécklungsprozess duerchgaang. Trotz der Wichtegkeet fir sou Tools op CI opzestellen, ass déi wichtegst Plaz fir se ze lafen de Computer vum Entwéckler. No allem ass e statesche Analyser kee Riichter deen iergendwou wäit vun Iech seet datt de Code net gutt ass. Am Géigendeel, et ass en Assistent deen Iech seet ob Dir midd sidd an Iech drun erënnert wann Dir eppes vergiess hutt.

Richteg, ouni regelméisseg Benotzung, statesch Analyse ass onwahrscheinlech d'Entwécklung wesentlech ze vereinfachen. No allem läit säin Haaptvirdeel fir en Entwéckler net sou vill an der Sich no komplexen a kontroversen Sektiounen vum Code, awer an hirer fréizäiteg Detektioun. Averstanen datt e Problem ze entdecken nodeems d'Ännerunge fir Tester geschéckt goufen net nëmmen désagréabel ass, awer och ganz Zäitopwendeg. Statesch Analyse, wann se regelméisseg benotzt, kuckt op all Ännerung direkt op Ärem Computer a bericht verdächteg Plazen wärend Dir um Code schafft.

A wann Dir oder Är Kollegen nach ëmmer net sécher sinn ob et derwäert ass den Analyser ëmzesetzen, da proposéieren ech Iech elo den Artikel ze liesen "Grënn fir de statesche Code Analyser PVS-Studio an den Entwécklungsprozess anzeféieren". Et adresséiert typesch Bedenken vun Entwéckler datt statesch Analyse hir Zäit hëlt an sou weider.

Statesch Analyse - vun Aféierung zu Integratioun

Wann Dir dësen Artikel mat engem engleschsproochege Publikum wëllt deelen, benotzt w.e.g. den Iwwersetzungslink: Maxim Zvyagintsev. Statesch Analyse: Vun Ufank un Integratioun.

Source: will.com

Setzt e Commentaire