Gibt es Code-Analyse-Tools, die meine Arbeit erleichtern? [geschlossen]

8

Ich habe kürzlich ein Programm geerbt, das in Managed C ++ von einem Typen geschrieben wurde, der gerade in den Ruhestand gegangen ist. Nachdem ich einige Zeit damit verbracht habe, zu graben, kann ich ehrlich sagen, dass mindestens 95% davon auf thedailywtf gehören. Ich habe nun aber die Aufgabe, sie zu modifizieren und auf eine Sprache zu portieren, mit der ich mich wohl fühle.

Das Programm selbst nimmt viele Parameter (50+) auf, die aus einer Datei eingelesen werden, führt eine Reihe von Berechnungen durch und spuckt einen Bericht aus. Sobald ich fertig bin, meinen Weg durch Seiten mit 3 Buchstabenvariablen zu gehen (von denen viele für völlig unabhängige Zwecke wiederverwendet werden), muss ich einen Weg finden, meinen Code zu testen, um sicherzustellen, dass er die gleichen Antworten wie der vorherige liefert Code.

Dies ist wahrscheinlich ein Wunschdenken, aber gibt es irgendwelche automatisierten Codeanalysewerkzeuge, die mir bei dieser Aufgabe in irgendeiner Weise oder Form helfen können?

Ich werde es auf Java portieren.

    
z - 23.07.2010, 11:42
quelle

4 Antworten

2
  

Ich muss mir einen Testweg einfallen lassen   mein Code, um sicherzustellen, dass es auftaucht   die gleichen Antworten wie der vorherige Code.

Komponententest

Da Sie erwähnt haben, dass es sich um ein Programm handelt, das Parameter in einer Datei annimmt und einen Bericht ausgibt, könnten Sie ein paar Eingaben erzeugen, die eine ausreichende Abdeckung für die Teile bieten, die Sie testen wollen Ausgabe aus dem alten Code.

Wenn etwas kaputt geht, vergiss nicht, dass du auch einen Fehler im alten Code entdeckt hast.

Ссылка

Progressiver Port

Ich würde es Stück für Stück portieren, ich glaube, es wird zu Ihrem Problem passen, da Sie in einem Bericht bestimmte Felder erfassen und diejenigen ignorieren können, die Sie noch nicht portiert haben (vorausgesetzt, Sie geben ein Feld / eine Berechnung aus) Sie müssen nicht das gesamte Programm portieren) und überprüfen Sie es mit dem richtigen Wert aus dem alten Code (oder anderen richtigen Quelle im Falle von Fehlern im alten Code).

    
bakkal 23.07.2010 12:06
quelle
2

Ich denke, Sie sollten mit dem Schreiben von Tests beginnen, um sicherzustellen, dass der portierte Code das Verhalten des vorhandenen Berichts nicht beeinträchtigt.

Was die automatisierten Codeanalyse-Tools anbelangt, sind diejenigen, die Ihnen in diesem Bereich am ehesten helfen, die Tools für die Datenflussanalyse, die den Datenfluss von der Datei in die Variablen und zum Bericht hypothetisch modellieren können. Leider hat eine Suche nach solchen Tools vor ein paar Wochen zu einem Scheitern geführt. Vielleicht möchten Sie von Hand gezeichnete DFDs haben, nur um sicher zu gehen, dass Sie nicht über etwas stolpern. Graphviz kann in diesem Bereich helfen.

Es könnte helfen, die Funktionalität auf Java zu kopieren (ich weiß, das klingt pervers), aber Sie könnten den Code sorgfältig unter den wachsamen Augen von PMD, FindBugs und ähnlichen Code-Qualitätssicherungswerkzeugen in Java umgestalten.

BEARBEITEN: Ich habe den Teil vergessen, in dem Werkzeuge einer bestimmten Kategorie hilfreich sein könnten - das sind die Code-Slicing-Tools in der Java-Welt, und ich muss zugeben, dass ich sie nicht benutzt habe sie so weit. Hier ist eine Liste, die helfen könnte:

Vineet Reynolds 23.07.2010 11:55
quelle
1

Ich habe vor einiger Zeit eine etwas verwandte Frage gestellt, die mich an einen möglichen Ansatz erinnert: Gibt es eine Findbugs und / oder PMD-Entsprechung für C / C ++?

Was mir in den Sinn kommt, ist, dass, wenn dieser Code so verrückt ist, es vielleicht eine gute Idee wäre, etwas Zeit zu investieren, um zu versuchen, es an Ort und Stelle zu reparieren. Offensichtlich ist es eine schwierige Sache, wenn Sie sich auf den Weg nach Java machen, sich Zeit zu nehmen, um C ++ - Code zu verbessern, der eine kurze Lebensdauer hat. Das heißt, wenn Sie einige der offensichtlich dummen Teile durch verbesserten Code ersetzen, wird es wahrscheinlich kürzer, straffer, offensichtlicher richtig und viel einfacher zu portieren und zu analysieren, während Sie versuchen, sich davon zu überzeugen, dass der neue Code funktional ist entspricht dem alten Code.

Die nützlichsten Werkzeuge, die in Antworten auf meine Frage vorgeschlagen wurden, waren Splint und Cppcheck .

Vor einiger Zeit gab es eine weitere umfassendere Frage, die verwandte Ideen beitragen könnte: Welche Open-Source-C ++ statischen Analysewerkzeuge sind verfügbar?

    
Bob Cross 26.08.2010 18:14
quelle
0

Disclaimer: Ich musste noch nie so etwas machen.

Könnten Sie nicht zuerst einen C ++ - zu-Java-Konverter verwenden (eine schnelle Google-Suche führte mich zu einem Produkt, das behauptet, das zu einem sehr vernünftigen Preis tun zu können, wenn es tatsächlich funktioniert C ++ nach Java Converter ).

Erstellen Sie dann Ihre Komponententests und beginnen Sie mit dem Refactoring.

    
Fredrick Pennachi 23.07.2010 12:33
quelle

Tags und Links