Visual Studio のコード メトリクス アナライザーとコード メトリクス パワー ツールTestMethod
は、次のコードのメソッドのコード行数を 8 と報告します。
せいぜい、コード行を 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));
}
}
なぜこれが当てはまるのか、誰でも説明できますか?
詳細情報
もう少し掘り下げた後out
、Test メソッドからパラメーターを削除してテスト コードを更新すると、LOC が 2 として報告されることがわかりました。これは正しいと思います。を追加するout
とジャンプが発生するため、ブレースや属性が原因ではありません。
dotPeek を使用して DLL を逆コンパイルすると、out
8 LOC と見なされる可能性のあるパラメーターのために生成されたかなりの量の追加コードが明らかになりますが、パラメーターを削除して逆コンパイルすると、5 LOC と見なされる可能性のある生成されたコードも明らかになるため、単に VS の問題ではありません。コンパイラが生成したコードを数えます(とにかくそうすべきだとは思いません)。