Analizator metryk kodu w Visual Studio, a także elektronarzędzia metryki kodu, Raport liczbę linii kodu w metodzie następującego kodu TestMethod
jako 8.wizualne wskaźniki kod Studio błędnych wierszy kodu
Co najwyżej spodziewam się, że raportuje linie kodu jako 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));
}
}
Czy ktoś może wyjaśnić, dlaczego tak się dzieje?
Więcej informacji
Po trochę więcej kopanie odkryłem, że usuwając parametr z metody badawczej out
i aktualizację kodu testowego powoduje LOC być zgłaszane jako 2, która moim zdaniem jest prawidłowe. Dodanie out
powoduje skok, więc nie jest to spowodowane aparatami ortodontycznymi lub atrybutami.
Dekompilacja biblioteki DLL za pomocą dotPeek ujawnia znaczną ilość dodatkowego kodu wygenerowanego z powodu parametru out
, który można uznać za 8 LOC, ale usunięcie parametru i dekompilacja ujawni również wygenerowany kod, który można uznać za 5 LOC, więc nie jest to po prostu kwestia VS zliczająca wygenerowany przez kompilator kod (o którym nie wierzę, że powinien to zrobić).
Dzięki za odpowiedź. Zajmuję się także cykliczną złożonością, ale chcę zebrać metryki LOC, jak również uważam, że ma uzasadnione zastosowania, np. Metoda 1000 linii bez instrukcji sterowania przepływem jest prawdopodobnie koszmarem utrzymania, mimo że jej CC to 1. Mam świadomość, że istnieje pewna niejednoznaczność w sposobie obliczania LOC, ale w tym konkretnym przypadku mówimy o skoku od co uważam za maksymalnie 3 LOC, do 8, co jest dużą różnicą. Mam większą metodę, która jest również błędnie zgłaszana jako mająca 159 LOC, podczas gdy w rzeczywistości jest bardziej podobna do 50. –
Nawiasem mówiąc, usunięcie parametru 'out' z metody' Test' i zaktualizowanie kodu testu powoduje, że LOC jest raportowany jako 2, co uważam za poprawne. Dodanie 'out' powoduje skok, więc nie jest on związany z nawiasami klamrowymi lub atrybutami. –