Was ist das beste Befehlszeilenprogramm zum Bereinigen von Code?
Wenn ich das schreiben von C - code, den ich ausschließlich mit einem editor und gcc. Ich Frage mich, wenn jemand könnte Ihnen ein gutes und einfaches Werkzeug, das findet unbenutzte Variablen, Funktionsdeklarationen und eventuell einige Optimierungen.
Weiß jemand ein gutes tool?
InformationsquelleAutor der Frage Chris | 2008-12-25
Du musst angemeldet sein, um einen Kommentar abzugeben.
Als Dan Fego darauf hingewiesen, GCC fangen können ungenutzte Variablen und unbenutzt statische Funktionen. Es wird nicht normalerweise ungenutzte extern-Funktionen, wie es normalerweise funktioniert eine Quelle-Datei auf einmal.
GCC (v4.3.2) hat Hunderte, wenn nicht Tausende von Optionen. Einer, der helfen könnte, ist '
--combine
' zu verbinden Quellcode-Dateien (solange man nicht in der Gewohnheit, dass Sie die gleichen Funktions-oder Variablennamen innerhalb von unterschiedlichen source-Dateien).Die option'
--help
", erzählt Sie mehr, die Optionen '--help=optimizers
' und '--help=warnings
' geben Sie ein paar hundert Zeilen output. Die Warnungen sind:Hinzugefügt: dies ist ein Skript namens
glint
dass ich verwenden, um zu desinfizieren meinem code. Es ist ziemlich alt, so dass Sie nicht verwenden die '#!/bin/sh
' - notation für die erste Zeile, und es sagt '$*
' statt '"$@"
', sowohl von denen, die behoben werden sollte, aber weder der behoben werden muss dringend. Beachten Sie, dass, obwohl GCC 4.x unterstützt nicht mehr die '-fwriteable-strings
' option, es noch unterstützt-Wwrite-strings
" - option und das hat Wert.Dieses Skript zeigt, dass Sie können erhalten eine Menge Laufleistung von vorhandenen Werkzeugen mit nur einer kleinen Menge an Arbeit. Sie können konfigurieren, dass nur etwa jeder option nutzt es - wenn auch hauptsächlich über die Umwelt, anstatt den Befehl Linie. Natürlich, Sie können hinzufügen zusätzliche Warnung Optionen an der Befehlszeile; was Sie nicht tun können, ist zu entfernen vorgegebenen Optionen außer über die Umwelt. Aber das ist OK; Sie sind ausgewählt aus guten Gründen. In diesen Tagen, ich würde wahrscheinlich '
GLINT_ANSI=-std=c99
' oder beheben Sie das Skript; ich habe nicht verwendet es viel zu spät, da ich den code ziemlich genau dem standard, dassglint
erzwingt. (Beachten Sie, dass die '-o /dev/null
' bedeutet, dass können Sie nur eine Datei zu einem Zeitpunkt; hack zu beheben!)InformationsquelleAutor der Antwort Jonathan Leffler
Lint ist das klassische Werkzeug für die überprüfung von Stil auf C-Programme. Es gibt mehr moderne Inkarnation von es genannt Schiene. Dieser Wikipedia-Eintrag hat eine Liste der statischen code-Analyse-tools, einige kostenlos, einige kommerziell.
InformationsquelleAutor der Antwort ConcernedOfTunbridgeWells
Obwohl ich sicher bin, dass dies keine umfassende Liste der statische code-Analyse tools, hier sind meine Eindrücke von einigen anderen diejenigen, mit denen ich gearbeitet habe in der Vergangenheit. (Ich arbeite meist mit C.)
Schiene: Ich habe oft verwenden Schienen, denn es ist für viele GNU/Linux-Distributionen. Es ist relativ einfach, mit zu arbeiten, aber es neigt dazu, zu überwältigend sein, wenn der Betrieb unter die strengste Einstellung. Außerdem, die manchmal notwendigen Einsatz von Annotationen können Unordnung und verschleiern leicht lesbaren code. Egal, ich schlage vor, es zu benutzen.
Uno: Uno ist definitiv eine vielversprechende, aber es ist nicht so streng wie Splint (by design). Stattdessen konzentriert Sie sich auf die Klarheit und Nützlichkeit seiner Warnungen. Für mich, die Uno ist nur sinnvoll als Ergänzung zu Schiene (zu deutlich darauf hinweisen, Warnungen, die versteckt zwischen den vergleichsweise vielen, die Schiene Probleme).
PC-lint: Ich finde, dass PC-lint ist unhandlich für ein proprietäres Programm. Einmal habe ich es benutzt, wenn die Entwicklung für MS-DOS und kryptische Namen, die er verwendet für seinen Fehler, machte es sehr schwierig zu verwenden. Von dem was ich höre, gibt es viele bessere Produkte zu verwenden, die auf MS-DOS.
Pscan: (Tot hyperlink) Pscan ist toll für die Suche nach format-string-Schwachstellen! Wie bei Uno, schlage ich vor, es als Ergänzung zur Schiene.
Wenn Sie nicht arbeiten, mit C, Sie können auch heraus überprüfen möchten: Wikipedia - Liste von Werkzeugen zur statischen code-AnalyseInspektion/Review-Tools, Source/Binary-Code-Analysatorenund Source Code Security-Analysatoren.
InformationsquelleAutor der Antwort
Wenn Sie gcc mit -Wall, fangen einige der Dinge, die Sie erwähnen, wie ungenutzte Variablen (und vielleicht auch die ungenutzten Funktionen). In Bezug auf Optimierungen, weiß ich nicht, aber im Allgemeinen ist der compiler schlau genug, um die Art der Optimierungen, die Materie, also ich würde nicht zu viel sorgen. Einfach nicht mit schrecklichen algorithmen. 😉
InformationsquelleAutor der Antwort Dan Fego
schiene (http://www.splint.org/) ist ganz ausgezeichnet; ich habe es auf megaline-codes zu suchen, für diese Art der Sache,
(Aktualisiert: jeder will eine art Direktor.)
InformationsquelleAutor der Antwort Charlie Martin
Wie wäre es, einen profiler verwenden, und feststellen, welcher code ausgeführt wird, der die meisten und konzentrieren sich auf die Teile.
Vielleicht gprof kann helfen?
/Johan
Edit: Oder, da du geredet hast, bereinigen, invertieren meine Antwort oben, und entfernen Sie den code, der nie ausgeführt wird.
InformationsquelleAutor der Antwort Johan