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.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.