.NET finden Sie toten Code über mehrere Lösungen

8

Wir haben ein Produkt mit ~ 15 Lösungen mit jeweils einer Reihe von Projekten.

Die Frage ist ganz einfach: Mit welchem ​​Tool können wir die gesamte Codebase nach totem Code durchsuchen?

Die Suche in einer einzigen Lösung ist einfach genug (viele Antworten auf SO für diese).

Aber was ist mit der Bestimmung, ob "öffentliches void Foo ()" im Projekt AlphaProj der Lösung AlphaSol, die nicht in AlphaSol selbst verwendet wird, tatsächlich in z.B. BetaSol?

    
Thomas 25.05.2011, 08:26
quelle

3 Antworten

4

Obwohl Sie 15 Lösungen haben, hält Sie nichts davon ab, eine andere Lösung zu erstellen, die alle referenzierten Projekte enthält, sagen wir All.sln. Wann immer Sie externe Referenzen finden müssen, öffnen Sie diese All.sln-Lösung und suchen nach den Referenzen.

Wir haben wahrscheinlich ungefähr 100 Lösungen und eine All.sln, die alle Projekte dieser Lösungen referenziert. Es ist einfach, alle Projekte von einer Lösung zu All.sln hinzuzufügen: Sie wählen einfach Add Existing Projects und wählen eine dieser 15 Lösungsdateien aus. Sie müssen den Dateityp im Add Existing Projects -Dialog anpassen, um die Lösungsdatei auswählen zu können. Um diese große Lösung organisiert zu halten, können Sie auch Lösungsordner verwenden.

    
Alex Aza 25.05.2011, 08:31
quelle
1

Sie können auch NDepend testen.

Da die andere Antwort für Ihre unmittelbare Not leise genug ist und ich nicht wie ein schlechter Werbespot klingen möchte, überlasse ich es dem interessierten Leser, mehr über dieses Tool zu erfahren.

    
Christian.K 25.05.2011 10:30
quelle
0

Um ein wenig über die Antwort von Christian nachzudenken, kann das Tool NDepend tatsächlich dabei helfen, ungenutzten Code in einer .NET-Codebasis zu finden. Haftungsausschluss: Ich bin einer der Entwickler dieses Tools.

NDepend schlägt vor, Code-Regel über LINQ-Abfrage (CQLinq) zu schreiben. Um werden 200 Standardcoderegeln vorgeschlagen, von denen 3 für unbenutzten / toten Code Erkennung:

NDepend ist in Visual Studio integriert, daher können diese Regeln direkt in der IDE überprüft / durchsucht / bearbeitet werden . Das Tool kann auch in Ihren CI-Prozess integriert werden und es können Berichte erstellt werden, die verletzte Regeln und Täter-Code-Elemente anzeigen.

Wenn Sie diese drei Links oben auf den Quellcode dieser Regeln klicken, werden Sie feststellen, dass diejenigen, die Typen und Methoden betreffen, etwas komplex sind. Dies liegt daran, dass sie nicht nur unbenutzte Typen und Methoden erkennen, sondern auch Typen und Methoden, die nur durch nicht verwendete tote Typen und Methoden (rekursiv) verwendet werden.

Dies ist statische Analyse , daher das Präfix Potenziell in den Regelnamen. Wenn ein Codeelement durch Reflexion nur verwendet wird , können diese Regeln es als nicht verwendet betrachten, was nicht der Fall ist.

Zusätzlich zu diesen drei Regeln würde ich empfehlen, die Codeabdeckung durch Tests zu messen und danach zu streben, eine vollständige Abdeckung zu erreichen. Oft sehen Sie, dass Code, der nicht durch Tests abgedeckt werden kann, tatsächlich ungenutzter / toter Code ist, der sicher verworfen werden kann. Dies ist besonders nützlich bei komplexen Algorithmen, bei denen nicht klar ist, ob ein Codezweig erreichbar ist oder nicht.

    
quelle