从dupFinder

时间:2016-09-06 13:03:45

标签: duplicates resharper code-analysis code-duplication dupfinder

我使用ReSharper命令行工具中的dupFinder来分析我的代码是否重复。

如果null - 参数传递给公共方法,我会分别抛出ArgumentNullException

public void Foo(MyClass myClass, MyOtherClass myOtherClass)
{
    if (myClass == null) throw new ArgumentNullException(nameof(myClass));
    if (myOtherClass == null) throw new ArgumentNullException(nameof(myOtherClass));

    Console.WriteLine("Foo");
}

public void Bar(MyClass myClass, MyOtherClass myOtherClass)
{
    if (myClass == null) throw new ArgumentNullException(nameof(myClass));
    if (myOtherClass == null) throw new ArgumentNullException(nameof(myOtherClass));

    var whatEver = 23 + 42;
    Console.WriteLine("Bar is " + whatEver);
}

不幸的是,dupFinder将带有空检查的行识别为重复... 解决这个问题的一种方法是将这些检查包装在区域中......

#region ExcludeFromDupFinder
if (myClass == null) throw new ArgumentNullException(nameof(myClass));
if (myOtherClass == null) throw new ArgumentNullException(nameof(myOtherClass));
#endregion

...并使用--exclude-code-regions-option执行dupFinder:

dupfinder.exe c:\MyProjects\MySolution.sln /exclude-code-regions="ExcludeFromDupFinder"

但是......我不太高兴在代码中包含那些不必要的区域,因为它们只是添加噪音并且除了平静dupFinder之外没有任何实际用途......

虽然我认为还有另一种方法可以解决这个问题,但我仍然会问:还有另一种方式(一种更好的)从分析中排除这些空值?

我了解其他dupFinder选项,例如--exclude-by-comment--discard-fields,但这些选项显然还有其他用途。像--discard-null-checks--discard-lines-by-pattern="someRegex"这样的选项会很不错。

0 个答案:

没有答案