Tagebuch: Statische Codeanalyse

  • Hallo,


    ich wollte hier mal ein Tagebuch zu meinem Exkurs in die statische Codeanalyse führen. Am Ende hilft ja vielleicht sogar meine Erkenntnis dem ein oder Anderen.

    Auf meinem Weg werde ich kleine Ausschnitte aus meinem Code / dem Standard YMIR Code präsentieren und zeigen wie ich sie geändert habe.


    Bevor wir allerdings dort ankommen, hier eine kurze Erklärung warum so ein öffentliches Tagebuch:

    Ich bin faul und so ein öffentlicher Thread motiviert mich vielleicht etwas (so zumindestens der Plan, mal sehen obs aufgeht).


    Wenn ihr Kritik & Wünsche für den Verlauf habt, gebt Bescheid.


    Mein Primärziel: Den YMIR Code weitestgehend aufräumen und dabei bestmöglichst etwas Wissen gewinnen durch die praktische Umsetzung. Wissen ist Macht, das merke ich jeden Tag auf Arbeit - Die Programmiersprache ist am Ende nur noch ein Tool. Und dennoch gillt es dieses Tool zu meistern und dabei helfen solche externen Hilfsprogramme ungemein. Aber das werdet ihr merken, falls ihr mich auf meinem Weg begleitet.


    Na dann..


    -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------


    11.03.21


    Direkt vorab: Viel hab ich heute nicht gemacht. Bin ja auch faul.

    Trotzdem hab ich mir einige Extension für Visual Studio Code angesehen und geschaut, welche Tools diese intern wiedderum nutzen um an die gängigsten und modernsten Tools zu kommen.

    Aus meiner Vergangenheit wusste ich ja, dass cppcheck eine schöne cli Anwendung ist, um ein solches Vorhaben umzusetzen. Und trotzdem wollte ich andere Tools ausprobieren und... was soll ich sagen.


    Sie (die Guten) kosten alle was. SonarQube, Pc-Lint, PVS-Studio (mein Lieblingstool).

    Es blieb nur sowas wie SonarLint übrig, was zwar cool ist aber aus Erfahrung mit anderen Programmiersprachen mehr auf den Stylefaktor eingeht und die grobe Kompelexitätseinschätzung von Funktionen. Was völlig dumm ist, aber ja. ReSharper hab ich noch gefunden, aber nicht verwendet.

    Es gab noch Lizard, welches auch rasch installiert war - Aber mehr Komplexität durch bestimmte Tokenisierung prüft als meinen Code effektiv zu verbessern. Ich konnte dem Tool 0,0 abgewinnen, was ein Dreck.


    Da sind wir also nun. cppcheck soll es sein. Meine erste Intention war klar, ich will alle meine Dateien prüfen. Was macht man?


    Code
    1. cppcheck -h


    Man versucht die Dokumentation zu lesen. Nach ein paar Zeilen der erste Versuch:


    Code
    1. cppcheck .


    mh. Ich sehe nichts. Warum seh ich nichts? Er prüft, aber dann labert er was von maximal 15 ifdefs blabla. Gut nochmal 'cppcheck -h'. Aha. Ich muss ihn zwingen, alle ifdefs durchzuprüfen. Ja gut, dann weiter.


    Code
    1. cppcheck -f .


    Immer noch keine Meldungen, mach ich was falsch? Etwas Google und StackOverflow später..


    Code
    1. cppcheck -f --enable=all


    Na, geht doch! Aber das muss doch einfacher gehen.. Ich bin faul as fuck, als ob ich jedes Mal ne CLI nutzen muss um dann mühseelig die Meldungen mit Google und StackOverflow auszutauschen...

    Es gibt eine Anwendung - Na Gott sei dank!


    Bitte melden Sie sich an, um diesen Anhang zu sehen.


    Da der Button zum Auswählen eines Verzeichnisses besser versteckt ist, als performanter Code bei YMIR... hat es mich sage und schreibe 10 Minuten gekostet den Button zu finden.

    Achso und wählt den Ordner mit der Solution, sonst meckert cppcheck das er keine Konfiguration erkennen würde. Mimimi. Muss weiblich sein dieses Tool. #SexismusLebt


    Bitte melden Sie sich an, um diesen Anhang zu sehen.Bitte melden Sie sich an, um diesen Anhang zu sehen.


    Eine Sekunde geprüft und der erste Interessante fehler. Bei solchen For Loops, die am Ende nur return true zurückgeben gibt es wohl eine Methode std::any_of aus der STL.

    Die schau ich mir morgen an, meine Freundin spammt mich schon zu. Mein Code muss echt Scheiße sein, cppcheck läuft nämlich seitdem ich hier schreibe. Also entweder hab ich geschlampt oder cppcheck ist scheiße langsam.

  • Dieses Thema enthält 13 weitere Beiträge, die nur für registrierte Benutzer sichtbar sind, bitte registrieren Sie sich oder melden Sie sich an um diese lesen zu können.