【问题标题】:False Positives on S1172 - "Unused method parameters should be removed"S1172 上的误报 - “应删除未使用的方法参数”
【发布时间】:2016-01-28 08:46:59
【问题描述】:

我从规则 csharpsquid:S1172 - “应删除未使用的方法参数”中得到误报,用于以下代码:

public class ExampleConverter : IMultiValueConverter
{
    public object Convert(object[] values, Type targetType, object parameter, CultureInfo culture)
    {
        return null;
    }

    public object[] ConvertBack(object value, Type[] targetTypes, object parameter, CultureInfo culture)
    {
        throw new NotSupportedException();
    }
}

Convert 和 ConvertBack 都是 IMultiValueConverter 实现的一部分,并且规则声明“忽略虚拟、覆盖方法和接口实现”。但是,在这种情况下,它会为 Convert 和 ConvertBack 中的每个参数触发。

这是规则的错误,还是我设置不正确?

【问题讨论】:

    标签: c# sonarqube sonar-runner


    【解决方案1】:

    目前的 C# 插件单独分析每个文件,并且仅使用 mscorlib added as a referenceIMultiValueConverter是在PresentationFramework.dll中定义的,它没有添加到编译中包含的引用中,因此编译器找不到它,也不知道这两个方法是那个接口的一部分。

    SonarLint for Visual Studio 不会遇到同样的问题,因为它使用了所有引用。 (但这仅适用于开发人员机器。)我们目前正在努力将同样准确的信息引入 SonarQube 平台。

    【讨论】:

    • 感谢您的快速回复。我很高兴得知 SonarQube 即将推出此功能——我热切期待更新!
    • 作为一种解决方法,如果您明确实现接口,那么 SonarCube 上的问题就会消失
    猜你喜欢
    • 2015-11-11
    • 2020-07-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-06
    • 2016-12-02
    • 2018-08-08
    相关资源
    最近更新 更多