C ++ Code-Analyse-Tools

7

Ich bin gerade dabei, C ++ zu lernen, und weil ich noch lerne, mache ich immer Fehler.
Mit einer so permissiven Sprache wie C ++ dauert es oft lange, um genau herauszufinden, was falsch ist - denn der Compiler lässt mich viel durchkommen. Ich weiß, dass diese Flexibilität eine der großen Stärken von C ++ ist, aber es macht es schwierig, die grundlegende Sprache zu lernen Gibt es ein Tool, mit dem ich meinen Code analysieren und Vorschläge basierend auf Best Practices oder einfach nur sinnvoll programmieren kann? Vorzugsweise als Eclipse-Plugin oder Linux-Anwendung.

    
Whatsit 13.02.2009, 16:41
quelle

8 Antworten

17

Aktiviere maximale Compiler-Warnungen (das ist die Option -Wall , wenn du den GNU-Compiler verwendest).

'Lint' ist das archetypische statische Analysewerkzeug.

valgrind ist ein guter Laufzeitanalysator.

    
ChrisW 13.02.2009, 16:44
quelle
6

Ich denke, Sie sollten lieber Vorträge über gute Praktiken halten und warum sie gut sind. Das sollte Ihnen mehr helfen als ein Code-Analyse-Tool (zumindest am Anfang).

Ich schlage vor, Sie lesen die Reihe Effektives C ++ und ** Effektive STL Bücher, mindestens. Siehe auch The Definitive C ++ Book Guide und List

    
Klaim 13.02.2009 16:52
quelle
5

Für g ++, wie auch für das Einschalten von -Wall, schalten Sie -pedantic ein und bereiten Sie sich darauf vor, bei der Anzahl der gefundenen Probleme überrascht zu sein!

    
anon 13.02.2009 16:49
quelle
3

Tool-Unterstützung für C ++ ist ziemlich schlecht im Vergleich zu Java, C #, etc., weil es keine kontextfreie Grammatik hat. Tatsächlich gibt es Teile der C ++ - Grammatik, die unentscheidbar sind. Im Grunde bedeutet dies, dass das Verständnis von C ++ - Code auf syntaktischer Ebene die Implementierung eines Compiler-Frontends mit semantischer Analyse erfordert. C ++ kann nicht unabhängig von einer semantischen Analyse in einen AST geparst werden, und die meisten Codeanalyse-Tools in IDEs usw. arbeiten auf AST-Ebene. Dies ist Teil des Kompromisses, den Sie im Austausch für die Flexibilität und Rückwärtskompatibilität von C ++ machen.

    
dsimcha 13.02.2009 16:46
quelle
3

Wenn alle Compiler-Warnungen (zumindest anfänglich) aktiviert werden und dann verstanden wird, was sie bedeuten, wie die behobenen Probleme zu beheben sind und welche der Warnungen echte Konstrukte darstellen, die Compiler-Schreiber vielleicht als mehrdeutig betrachten, ist das ein guter erster Schritt.

Wenn Sie etwas Schwereres brauchen, können Sie PC-Lint ausprobieren, wenn Sie auf Windows sind die besten Lint-Tools für C ++. Denken Sie daran, dass Sie diese Tools so konfigurieren müssen, dass sie Ihren Codierungsstil widerspiegeln, da Sie sonst mit Warnungen überhäuft werden und das Holz für die Bäume nicht sehen können. Ja, es kostet Geld und es ist wahrscheinlich ein bisschen übertrieben, wenn Sie nicht C ++ auf einem "dafür bezahlt" -Ebene tun, aber ich finde es von unschätzbarem Wert.

    
Timo Geusch 13.02.2009 16:56
quelle
3

Es gibt eine Liste mit statischen Codeanalyse-Tools unter Wikipedia .

Aber Warnungen sind im Allgemeinen gut, aber ein Problem beim Aktivieren aller Warnungen mit Pedantic und Wall ist die Anzahl der Warnungen, die Sie möglicherweise erhalten, wenn Sie Header einschließen, über die Sie keine Kontrolle haben. Dies kann viel Lärm verursachen. Ich ziehe es vor, meine eigene Software mit allen aktivierten Warnungen zu kompilieren. Wie ich in Linux programmiere, mag ich das normalerweise:

Fügen Sie die externen Header, die ich in eine separate Datei einfügen muss, und am Anfang dieser Datei vor dem Include put ein:

%Vor%

Und dann fügen Sie diese Datei aus Ihrem Code ein. Dadurch können Sie alle Warnungen aus Ihrem eigenen Code sehen, ohne dass sie in Warnungen von externem Code ertrinken. Der Nachteil ist, dass es sich um eine gcc-spezifische Lösung handelt, mir ist keine plattformunabhängige Lösung bekannt.

    
Zitrax 15.02.2009 21:58
quelle
2

lint - es gibt viele Versionen, aber wenn Sie nach Flusen suchen, sollten Sie eine finden, die funktioniert. Das andere, was Sie tun müssen, ist die Compiler-Warnung zu aktivieren - wenn Sie gcc / g ++ verwenden, ist die Option -Wall.

Sie könnten CppChecker hilfreich als Plugin für Eclipse finden, das gcc / PC unterstützt Flusen.

    
Nick Fortescue 13.02.2009 16:45
quelle
2

Ich denke, dass Sie hier wirklich lernen müssen, wie Sie außerhalb einer IDE debuggen. Dies ist meiner Meinung nach eine wertvolle Fähigkeit, da Sie für die Entwicklung von Software nicht mehr so ​​ein schweres Toolset benötigen, und es wird für die große Mehrheit der Sprachen gelten, die Sie bereits kennen und lernen werden.

Allerdings ist es schwierig, sich daran zu gewöhnen. Sie müssen Code nur zu Debugging-Zwecken schreiben, z.B. Schreiben Sie nach jeder Zeile, die noch nicht debuggt wurde, Prüfungen, um sicherzustellen, dass das Ergebnis wie erwartet ist, oder drucken Sie die Werte auf der Konsole oder in Meldungsfeldern, sodass Sie sie selbst überprüfen können. Es ist sehr langwierig, aber Sie können Ihre Fehler leichter erkennen, innerhalb oder außerhalb einer IDE.

Laden Sie einige der kostenlosen Debugging-Tools wie GDB herunter und probieren Sie sie aus. Sie können Ihnen dabei helfen, Speicher usw. zu untersuchen , ohne einen eigenen Code schreiben zu müssen.

    
jheriko 13.02.2009 16:50
quelle

Tags und Links