2008-09-07 15 views
0

Gibt es ein Tool, mit dem ich eine Freitextsuche über einen Systemcode durchführen kann, aber nur über den Code, der tatsächlich während eines bestimmten Aufrufs ausgeführt wurde?Freitextsuche mit Codeabdeckung integriert

Um ein bisschen Hintergrundwissen zu bekommen, wenn ich mich in einem neuen System auskenne, finde ich häufig heraus, woher ein bestimmter Wert kommt, aber die Suche nach der ganzen Code-Basis ergibt weit mehr Übereinstimmungen, als ich vernünftigerweise beurteilen kann individuell.

Für was es wert ist, wollte ich dies in Perl und Java irgendwann einmal, aber ich würde gerne wissen, ob Sprachen in einem System diese Funktion unterstützen.

Antwort

1

Sie können den Arm eines Codeabdeckungswerkzeugs generell verdrehen und einen Bericht abrufen, der die Pfade anzeigt, die während eines bestimmten Laufs ausgeführt wurden. Dieser Bericht sollte den Code selbst enthalten, wobei die ersten paar Spalten entsprechend der jeweiligen Schreibweise des Coverage-Tools markiert sind, ob ein bestimmter Pfad ausgeführt wurde.

Sie können dies direkt verwenden, oder Sie müssen es möglicherweise vorverarbeiten und entfernen Sie entweder den Code, der nicht ausgeführt wurde, oder fügen Sie eine neue Notation in jeder Zeile, die angibt, ob es ausgeführt wurde (die meisten Tools nur zeigen Pfadinformationen an Kontrollpunkten):

so von einem Coverage Tool Sie einen Bericht wie diese bekommen könnte:

T- if(sometest) 
    { 
x  somecode; 
    } 
    else 
    { 
-  someother_code; 
    } 

die Notation T- zeigt an, dass die if-Anweisung immer nur zu wahr ausgewertet, und so nur der erste Teil des Codes ausgeführt. Die spätere Schreibweise 'x' zeigt an, dass diese Zeile ausgeführt wurde.

Sie sollten in der Lage sein, eine Regex zu bilden, die nur dann übereinstimmt, wenn die erste Spalte ein T, F oder x enthält, sodass Sie alle ausgeführten Steueranweisungen und ausgeführten Zeilen erfassen können.

Manchmal erhalten Sie nur Abdeckungsinformationen an jedem Kontrollpunkt, wofür Sie dann die C-Datei parsen und die Ausführungszeilen selbst markieren müssen. Nicht so einfach, aber auch nicht unmöglich.

Dennoch klingt dies wie eine interessante Frage, wo die Lösung wahrscheinlich mehr Arbeit als es wert ist ...

-Adam