Embedded System LINT verwenden

8

Derzeit entwickle ich eingebettete Systeme mit einer Reihe verschiedener Compiler, von denen die häufigsten von IAR-Systemen stammen.

Meine Liebe zur Hardware ist das, was Laufwerke für eingebettete Systeme und Firmware antreibt. Mir scheint jedoch einiges an Software-Engineering zu fehlen.

Ich habe oft gelesen, dass ein guter Lint für Code von unschätzbarem Wert ist. Ich würde gerne wissen, ob jemand hier einen Lint verwendet, welcher Lint es ist und wie sehr er bei der Erkennung von Fehlern hilft.

Kortuk
quelle

Antworten:

4

Ich habe in der Vergangenheit Flusen verwendet und fand es nützlich. Ich musste es jedoch nicht mehr verwenden, als ich zu einem größeren Projekt überging, das es nicht verwendete. Das machte es schwierig, Flusen zu verwenden, da der Code miteinander verbunden war. Das größte Problem mit Flusen ist die Konfiguration, um Fehlalarme zu entfernen, ohne sich darum zu kümmern. Es könnte jetzt besser sein, dass sie im letzten Jahr eine weitere Veröffentlichung gemacht haben.

Eine Firma, mit der ich zusammenarbeite, hat dieses große Projekt in den statischen Analysator von Coverity aufgenommen. Dies ist jedoch ein großer Teil des Geldes, der für kleine Unternehmen nicht empfohlen wird.

Jay Atkinson
quelle
Ich habe gelesen, dass ich damit rechnen muss, Zeit im Voraus zu verbringen, damit es keine Fehlalarme mehr gibt. Welche Flusen hatten Sie damals gewählt?
Kortuk
Zu der Zeit war es Version 8.0.
Jay Atkinson
Wissen Sie, welche Firma es geschafft hat? Es gibt viele verschiedene Lint-Programme. Mir wurde gesagt, dass es wegen der kleinen Flusen, die der Compiler vermisst, Lint heißt.
Kortuk
1
Entschuldigung, Gimpels PC-LINT. Das Schöne ist, dass sie Ihnen zumindest dabei helfen, die Ausgabe mit vordefinierten Regelsätzen zu zähmen, die auf dem von Ihnen verwendeten Compiler und Editor basieren. Sie können von ihrer Website heruntergeladen werden: gimpel.com
Jay Atkinson
Wenn Ihre neue Quellcodebasis viele "False Positives" ausspuckt, ist dies leider meistens kaputt.
Tim Williscroft
6

Ich habe keine Flusen verwendet, aber ich finde, dass die Warnungen von GCC viele Programmierfehler erkennen können.

Hier sind meine bevorzugten CFLAGS

CFLAGS + = -Werror -W -Wall -ansi -pedantic -Wformat-nonliteral -Wcast-align -Wpointer-arith -Wbad-function-cast -Wmissing-Prototypen -Wrict-Prototypen -Wmissing-Deklarationen -Winline -Wundef -Wnested- externs -Wshadow -Wconversion -Wwrite-Strings -Wno-Konvertierung -Wextra -Wstrict-Aliasing -Wcast-Qual

Ich habe auch Linus Torvalds ' Sparse für statische Analysen ausprobiert . Ich denke jedoch, dass diese Art von Tools für große Systeme nützlicher ist.

Toby Jaffey
quelle
Die meisten Systeme, mit denen ich arbeite, liegen im Bereich von 50.000 Codezeilen.
Kortuk
3

Ich muss zugeben, ich hatte nicht viel mit einer Art Flusen in einem Mikrocontroller / Mikroprozessor-Projekt zu tun.

In meinem aktuellen eingebetteten Projekt, das C ++ auf einem Linux-basierten PC / 104 SBC verwendet, haben wir cppcheck verwendet (funktioniert auch mit C!). Es funktioniert ziemlich gut, obwohl es Probleme mit komplizierten Klassenvererbungsbäumen hat. Und es hat einen gewissen Wert geliefert - es ist gut, um nach potenziellen Stellen zu suchen, an denen Speicherlecks auftreten können. Aber die meisten Dinge, die darin erwähnt wurden, waren stilistisch - verwenden Sie Vorinkremente anstelle von Nachinkrementen in For-Loops, so etwas.

Ich habe auch eine Online-Fussel für Javascript verwendet, als ich Anwendungen für ein Unternehmenssoftwaresystem entwickelt habe. Es war dort absolut von unschätzbarem Wert, da es in diesem Setup keine Debugging-Tools gab, mit denen nach Syntaxfehlern gesucht werden konnte.

J. Polfer
quelle