So finden Sie Code, der nur durch Tests aufgerufen wird

8

Gelegentlich suche ich nach Code, suche nach Verwendungen einer Methode (mit Resharper) und stelle fest, dass er nur durch Tests aufgerufen wird. Es ist also effektiv redundant und ich kann es löschen und die Methoden, die es aufrufen.

Offensichtlich hat es keinen Sinn, unbenutzten Code herumzulegen, um den Build und den Testlauf zu verlangsamen. Was ich möchte, ist ein Werkzeug, das mir sagen kann, wo alle Teile des Produktionscodes sind, auf die nur durch Tests zugegriffen wird.

Ich habe eine Vollversion von Resharper und auch eine Testversion von NDepend, aber ich habe noch nicht herausgefunden, wie man beide benutzt, um das gewünschte Ergebnis zu erhalten (ohne dafür zu bezahlen). Ich vermute, dass es mit der Vollversion von NDepend möglich ist, aber gibt es andere Tools, über die Leute Bescheid wissen?

Wenn der Kontext hilft, ist die Lösung die ASP.NET-Website, deren Funktionalität größtenteils von einem WCF-Dienst gehandhabt wird. Die einzigen gültigen Einstiegspunkte für den Großteil des Codes sind die Dienstmethoden. Die Tests sind in eigenen Projekten.

Ich habe ein Kopfgeld begonnen, weil ich sicher bin, dass jemand anderes dieses Problem schon einmal gehabt und gelöst hat!

    
Jonny Cundall 21.09.2010, 15:52
quelle

3 Antworten

4

Manuelles Suchen mit NDepend sollte mit Dependency Matrix funktionieren. Dort können Sie sehen, welche Methoden nur von den Unit Test Assemblies verwendet werden.

Ich bin mir nicht sicher, ob Sie eigene CQL-Abfragen mit der Testversion schreiben können. Aber mit der Pro-Version könnten Sie eine Abfrage wie folgt verwenden:

%Vor%

Damit dies funktioniert, müssen Sie ein NDepend-Projekt erstellen, das alle Ihre Assemblys kennt.

Für NAME_OF_THE_UNIT_TEST_ASSEMBLY müssen Sie Ihre Unit Test Assembly einfügen und im zweiten Teil müssen Sie Ihre Produktionscode Assemblies mit IsUsedBy angeben und mit OR trennen.

    
Noffls 27.09.2010, 10:00
quelle
2

Ein nichttechnischer Ansatz besteht darin, Ihr Testprojekt vorübergehend aus Ihrer Lösung zu entfernen und dann mithilfe der Codeanalyse von Visual Studio (oder FxCop) nach Methoden zu suchen, die von keinem anderen Verfahren aufgerufen werden.

    
Iain Hoult 29.09.2010 14:49
quelle
0

Sie könnten NDepend mit einigen benutzerdefinierten Abfragen verwenden ... Das ist nur von der Spitze meines Kopfes, benutzte es nie für genau das, aber es sollte funktionieren.

    
Alex Paven 21.09.2010 18:25
quelle