Tools zur Codeabdeckung wie Emma, Cobertura und Clover instrumentieren Ihren Code und zeichnen auf, welche Teile davon durch Ausführen einer Reihe von Tests aufgerufen werden. Dies ist sehr nützlich und sollte ein wesentlicher Bestandteil Ihres Entwicklungsprozesses sein. Mithilfe dieser Funktion können Sie feststellen, wie gut Ihre Testsuite Ihren Code abdeckt.
Dies ist jedoch nicht dasselbe wie das Identifizieren von echtem toten Code. Es wird nur Code identifiziert, der von Tests abgedeckt (oder nicht abgedeckt) wird. Dies kann zu falsch positiven Ergebnissen führen (wenn Ihre Tests nicht alle Szenarien abdecken) sowie zu falsch negativen Ergebnissen (wenn Ihre Tests auf Code zugreifen, der in einem realen Szenario tatsächlich nie verwendet wird).
Ich kann mir vorstellen, dass der beste Weg, um toten Code wirklich zu identifizieren, darin besteht, Ihren Code mit einem Coverage-Tool in einer Live-Laufumgebung zu instrumentieren und die Codeabdeckung über einen längeren Zeitraum zu analysieren.
Wenn Sie in einer redundanten Umgebung mit Lastenausgleich arbeiten (und wenn nicht, warum nicht?), Ist es wahrscheinlich sinnvoll, nur eine Instanz Ihrer Anwendung zu instrumentieren und Ihren Lastenausgleich so zu konfigurieren, dass ein zufälliger, aber kleiner Teil von Ihre Benutzer werden auf Ihrer instrumentierten Instanz ausgeführt. Wenn Sie dies über einen längeren Zeitraum tun (um sicherzustellen, dass Sie alle realen Nutzungsszenarien - solche saisonalen Schwankungen - abgedeckt haben), sollten Sie genau sehen können, auf welche Bereiche Ihres Codes unter realer Nutzung und auf welche Teile zugegriffen wird werden wirklich nie zugegriffen und daher toter Code.
Ich habe dies noch nie persönlich gesehen und weiß nicht, wie die oben genannten Tools verwendet werden können, um Code zu instrumentieren und zu analysieren, der nicht über eine Testsuite aufgerufen wird - aber ich bin mir sicher, dass dies möglich ist.