对于以下代码,我从规则 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 实现的一部分,规则声明“忽略虚拟、覆盖方法和接口(interface)实现”。但是,在这种情况下,它会针对 Convert 和 ConvertBack 中的每个参数触发。
这是规则的错误,还是我设置不正确?
最佳答案
C# 插件目前单独分析每个文件,并且只有 mscorlib added as a reference . IMultiValueConverter
是在PresentationFramework.dll中定义的,没有添加到编译包含的引用中,因此编译器找不到它,也不知道这两个方法是那个界面。
使用 SonarLint for Visual Studio 不会遇到同样的问题,因为它使用了所有引用。 (但这只适用于开发人员机器。)我们目前正在努力将同样准确的信息带到 SonarQube 平台。
关于c# - S1172 上的误报 - "Unused method parameters should be removed",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33393414/