Der Code-Analysator Metriken in Visual Studio, sowie das Code-Metriken Elektrowerkzeug, um die Anzahl der Zeilen des Codes in den TestMethod
Verfahren des folgenden Codes berichtet als 8.Visual Studio Code-Metriken Codezeilen Fehlmeldungen
allenfalls würde erwarten, dass ich es Zeilen Code melden als 3.
[TestClass]
public class UnitTest1
{
private void Test(out string str)
{
str = null;
}
[TestMethod]
public void TestMethod()
{
var mock = new Mock<UnitTest1>();
string str;
mock.Verify(m => m.Test(out str));
}
}
Kann mir jemand erklären, warum dies der Fall ist?
Weitere Informationen
Nach etwas mehr graben die ich gefunden habe, dass die out
Parameter aus dem Testverfahren zu entfernen und die Aktualisierung des Testcode verursacht LOC als 2 berichtet werden, was ich glaube, richtig ist. Die Hinzufügung von out
verursacht den Sprung, also nicht wegen Klammern oder Attributen.
Dekompilieren der DLL mit dotPeek enthüllt eine Menge zusätzlichen Code generiert wegen der out
Parameter, der 8 LOC berücksichtigt werden kann, aber das Entfernen der Parameter und Dekompilierung zeigt auch generierten Code, der als 5 LOC betrachtet werden kann, so ist es nicht einfach eine Frage von VS Compiler generierten Code zählen (was ich glaube nicht, dass es sowieso tun sollte).
Vielen Dank für Ihre Antwort. Ich nehme auch zyklomatische Komplexität auf, aber ich möchte LOC-Metriken sammeln, und ich glaube, dass sie legitime Verwendungen haben, z. Eine 1.000-Zeilen-Methode ohne Flow-Control-Anweisungen ist wahrscheinlich ein Wartungs-Albtraum, obwohl ihr CC-Wert 1 ist. Ich bin mir bewusst, dass die Berechnung von LOC etwas mehrdeutig ist, aber in diesem speziellen Fall sprechen wir von einem Sprung was ich 3 LOC am besten betrachte, bis 8, was ein großer Unterschied ist. Ich habe eine größere Methode, die auch falsch als 159 LOC gemeldet wird, wenn es in Wirklichkeit mehr wie 50 ist. –
Übrigens verursacht das Entfernen des "out" -Parameters von der "Test" -Methode und das Aktualisieren des Testcodes, dass LOC als gemeldet wird 2, was ich glaube, ist richtig. Die Hinzufügung von "out" verursacht den Sprung, also nicht wegen Klammern oder Attributen. –