Guten Morgen,
eigentlich bin ich embedded Programmierer aber ich denke, dass das Thema
trotzdem hier her gehört.
Es geht um folgendes:
Um unsere Softwarequalität zu steigern möchten wir einen statischen
Codeanalyser verwenden. Ich habe hierbei an PC-Lint gedacht, da es
eigentlich fast alle unsere Anforderungen erfüllt und sich in unsere
Entwicklungsumgebung uVision integrieren lässt.
Die meisten sind aber nicht ganz zufrieden mit dem Tool, vor allem da
die Konfiguration sehr umständlich sein kann und die Ausgabe der Fehler
im Build Output nicht übersichtlich ist.
Bei einer weiteren Recherche bin ich auf das Programm CodeSonar
gestoßen.
Rein vom optischen Aspekt und von der Handhabung her kann man eigentlich
nichts daran aussetzen. Mit der Evaluierungsversion habe ich mich auch
schon ein bisschen beschäftigt aber bin noch nicht so tief drin, dass
ich den eigentlichen Zweck des Programms gut bewerten könnte.
Laut Internet und White Papers scheint das Toll ganz gut zu sein. Es
vergleicht sich in einigen White Papers des öfteren mit PC-Lint und
macht dieses regelrecht schlecht aber das kann ich so nicht bestätigen.
PC-Lint steht dem Programm meiner Meinung nach in nichts nach, außer in
der Handhabung und dem optischen Aspekt.
Wie seht ihr das?
Habt ihr Empfehlungen, Pro und Contras für das ein oder andere Tool?
Rein vom Bauchgefühl her würde ich sagen, dass PC-Lint den eigentlichen
Zweck genauso gut erfüllt, bis auf die bereits genannten Punkte.
etk552 schrieb:> Die meisten sind aber nicht ganz zufrieden mit dem Tool, vor allem da> die Konfiguration sehr umständlich sein kann und die Ausgabe der Fehler> im Build Output nicht übersichtlich ist.
Das klingt nach Ausrede. Die Konfiguration muss man ein einziges Mal
durchführen (und danach auf die anderen Entwicklungssysteme übertragen),
und was soll da "unübersichtlich" sein? Eine Integration direkt in die
verwendete IDE ist doch für das tägliche Arbeiten mit so einem Werkzeug
das wichtigste; es als Standalone-Werkzeug neben der IDE zu nutzen
verlockt a) dazu, es nicht zu tun und ist b) unkomfortabel bis
fehlerträchtig, da man nicht mit einem Mausklick in den Editor an die
betroffene Stelle springen kann.
Was Du alternativ in Erwägung ziehen könntest (ohne jetzt eine genaue
inhaltliche Vergleichswertung anzustellen), wäre cppcheck
http://cppcheck.sourceforge.net/
Das muss natürlich auch in die IDE integriert werden, wenn man es
komfortabel nutzen will ...
Oder die Verwendung von clang. Das ist zwar eigentlich ein Compiler,
aber den kann man auch zur Codeanalyse einsetzen, und er ist wohl sehr
gründlich.
Mal rein interessehalber:
Die Codesonar-Webseite ist eine typische Marketing-Bullshit-Webseite,
die ein ganz wesentliches Detail ungenannt lässt, nämlich den Preis. Was
wollen die dafür haben?
Danke für die Informationen.
Das habe ich mir auch gedacht. Vor allem wenn man sich mal das White
Paper:
"How Codesonar compares to PC-Lint" durchliest.
Da wird PC-Lint regelrecht schlecht geredet.
Preislich kann ich gerade nicht viel dazu sagen.
Die erste Nachfrage hat der Kontacktmann gekonnt ignoriert und auf die
zweite Nachfrage fehlt mir noch eine Antwort.
Laut kurzer google Recherche scheint es aber relativ teuer zu sein.
Mehrere kEuro.
PC-Lint ist recht günstig. Da kostet die Einzelplatzlizenz 340€, wenn
man es über Keil bezieht.
Kann natürlich sein, daß in Deiner Firma irgendwelche Spezialitäten
benötigt werden, die codesonar liefern kann, was weiß ich, irgendwelche
schicken Codestatistiken, die die Schlipsträger in ihren monatlichen
Excel-Tabellen und Powerpoint-Präsentationen unterbringen können, um ihr
trostloses "Management"dasein irgendwie anzureichern.
Wenn es einfach nur darum geht, die üblichen Verdächtigen in
C-/C++-Quelltexten zu finden, die der Compiler nicht selbst rausfinden
kann, dann ist so ein Tool wie cppcheck schon mal ein Anfang, um einen
Vorgeschmack zu finden.
Hier noch der fehlende Link auf clang:
https://clang-analyzer.llvm.org/
Das erfordert zwar etwas Aufwand, um es zum Laufen zu bekommen (sofern
man nicht unter OS X arbeitet, muss man das Ding sich selbst aus Sourcen
zusammenbauen), aber es sieht vielversprechend aus.
Spiel einfach mal mit beiden herum, kost' ja nix außer Zeit.
Lint wird nicht "schlechtgeredet", sondern bei einem teuren Tool wie
CodeSonar darf man ja wohl erwarten, daß es Sachen findet, die Lint
nicht findet. Das ist doch die erste Frage, die man als Kunde stellt:
was kriegt man für diverse tausende Euro, was man für etliche hundert
nicht bekommt?
Mein Rat: kontaktier den Vertrieb und hol Dir ne kostenlose, zeitlich
begrenzte, rechnergebundene Eval-Lizenz. Gibt's allerdings nur für
Firmenkunden. Dann spiel einfach mal damit herum und verschaff Dir einen
Überblick, ob Dir das Produkt an sich zusagt.
Falls ja, ist die Frage, ob es den Preis wert ist. Das hängt auch davon
ab, was denn ein Bug bei Euch im Mittel so kostet. Was wiederum davon
abhängt, wie der Entwicklungsprozeß aussieht, welche Anforderungen zu
erfüllen sind und wie kritisch die Kunden sind.
Wenn's eine Firma ist, die z.B. Apps, Spiele oder so für Endkunden
herstellt, da lohnt sich nichtmal Lint, weil diese Kunden sowieso jede
noch so verbugte Software kaufen - besonders schön zu sehen im
Gamerbereich.
Falls Ihr aber Produkte herstellt, wo schlimmstenfalls Leute sterben
könnten (z.B. Medizinbereich) und andere Leute (z.B. bei Euch) in den
Knast wandern könnten, relativieren sich die Kosten doch stark.
Zu CppCheck, das kann ich unter allen Umständen empfehlen, zusätzlich.
Egal, welche Tools schon vorhanden sind, aber mehr Checker sind immer
besser. Zudem ist CppCheck kostenlos, und die Einarbeitungszeit liegt
gefühlt im Sekundenbereich.
Eine Evaluierungslizenz habe ich bereits und das Tool auch schon kurz
angetestet. Bisher ist mir nichts aufgefallen, was Lint mit den
richtigen Einstellungen nicht auch gefunden hat.
Aber wie gesagt, meine Tests waren bisher nicht ausführlich. Ich habe
CodeSonar nur ein paar Mal drüberlaufen lassen.
Ansich würde es mir schon zusagen aber bisher habe ich noch kein
Kaufargument gefunden, was die wirklich sehr hohen Kosten rechtfertigen
würde.
Lint wird durch die Wortwahl und diverse Beispiele in den Papers schon
schlecht geredet. Da werden Punkte aufgeführt, die nicht der Wahrheit
entsprechen.
etk552 schrieb:> Aber wie gesagt, meine Tests waren bisher nicht ausführlich. Ich habe> CodeSonar nur ein paar Mal drüberlaufen lassen.
Naja, kommt halt auch auf den Code an. Wenn der tatsächlich fehlerfrei
sein sollte, dann wird da kein Tool etwas finden.
Versuch doch mal, aus Deiner Versionsverwaltung ältere Versionen
auszuchecken, wo Du weißt, daß da bestimmte Bugs drin sind, die man
automatisiert finden könnte, und guck, welches Tool die findet.
> Lint wird durch die Wortwahl und diverse Beispiele in den Papers schon> schlecht geredet. Da werden Punkte aufgeführt, die nicht der Wahrheit> entsprechen.
Hast Du das mit Lint wirklich nachgeprüft? Und zwar mit exakt der
Lint-Version, die in dem (vermutlich nicht 100% aktuellen) Paper
verglichen wurde?
Nop schrieb:> Lint wird nicht "schlechtgeredet", sondern bei einem teuren Tool wie> CodeSonar darf man ja wohl erwarten, daß es Sachen findet, die Lint> nicht findet.
Dann wären IAR-Compiler auch besser als GNU. Das stimmt sicher nicht
pauschal.
Mein Tip an den TO: Es kommt auf Deine Neigung an.
Wenn Du weisst, was ein makefile ist, Compiler und Linker unterscheiden
kannst und auch mit Textfressern umzugehen weisst (Regulare Expressions
sind kein Fremdwort), dann ist PC-Lint die erste Wahl. Egal ob Du MISRA
einsetzen willst, neuen Code hast oder Legacy, Du wirst Dich wundern,
wie gut und schnell ihr zusammenarbeitet und wie problemlos LINT in
Deine IDE(s) und Workflows integriert ist (ohne jeden Mausklick später)
und Du wirst Dich jeden Tag freuen, wie dich jedes Refactoring bis in
höchste Warnstufen führt. Erspare Dir den Codesonar-Vertreter, da Du die
Vorteile einfach nicht kapieren wirst.
Wenn Du eher der moderne Klicki-Bunti-Typ bist, der per Mausklick
konfiguriert und Unit-Tests und McCabe favorisierst, dann wirst Du mit
CodeSonar glücklich und produktiv sein. Du wirst erkennen, wie schlecht
der legacy-Code anderer ist, wie wichtig guter Code ist und wieviel
wichtiger gute Tools sind. Du wirst präzise Reports bekommen, welche
Qualität Dein Code hat und wirst Dich blendend mit dem Vertreter
Verstehen, da er genau auf Deine Bedürfnisse eingeht. Deine
Programmierung wird auf ein neues Level gehoben, so dass Du Codesonar
schon bald nicht mehr brauchst.
Achim S. schrieb:> Wenn Du eher der moderne Klicki-Bunti-Typ bist, ... Unit-Tests ...> favorisierst
Weder Lint noch CodeSonar ist kein Ersatz für Tests und Unit-Tests
verhindern so manches Desaster, vor allem nach größeren Umbauten. Was
das mit Klicki-Bunti-Typen zu tun, ist mir rätselhaft...
Wem die Konfiguration von PC-Lint zu umständlich ist, der ist wohl
entweder zu doof, oder zu faul, sich durch die vielen Optionen zu
arbeiten und übersieht, dass man das eigentlich nur einmal machen muss.
Für solche Leute muss eben jemand mit entsprechender Qualifikation das
Teil konfigurieren, damit den Dumpfbacken nicht mehr jeder Unsinn durch
geht. Aber vermutlich ist es letzteres auch der Grund für das Gemaule...
Nur so aus Interesse und auch weil ich gerade am evaluieren bin was ist
der Unterschied zwischen CodeSonar und SonarCube? Bin für Hinweise auf
wwww die den Unterschied der beiden erklären froh.
Nop schrieb:>> Lint wird durch die Wortwahl und diverse Beispiele in den Papers schon>> schlecht geredet. Da werden Punkte aufgeführt, die nicht der Wahrheit>> entsprechen.>> Hast Du das mit Lint wirklich nachgeprüft? Und zwar mit exakt der> Lint-Version, die in dem (vermutlich nicht 100% aktuellen) Paper> verglichen wurde?
Na zumindest der Hersteller von PC-Lint behauptet, dass sie gewisse
Features schon vor 15 Jahren eingebaut hätten und das Whitepaper
behautpet, es gäbe sie nicht.
Quelle: http://www.gimpel.com/html/pclint_TRUTH.pdf
Wir setzen auch PC-Lint ein und ich fand die konfiguration jetzt nicht
sooo schwierig.