代码检查:参数输出值始终被丢弃(非私有可访问性)
C# 6.0 的 "out var" 大大减少了使用带有 出 参数的方法所需的代码量——现在我们几乎总是内联声明变量,并且经常使用类型推断来省略变量类型: dictionary.TryGetValue(key,out var value)。
C# 6.0 改进了 出 参数的另一个方面,即能够使用 M(out _) 或 M(out var _) 语法忽略我们不需要的输出参数值。 因此,在现代 C# 代码库中,像 DoSomething(arg,out _,out _) 这样的调用并不少见。
JetBrains Rider 分析了此类调用,并报告在所有调用点被丢弃的 出 参数。 这有助于识别始终被丢弃的值的潜在问题,并通过移除未使用的参数简化签名。
要使解决方案范围的检查生效,您需要启用以下至少一项功能:
简化的全局使用检查:在 JetBrains Rider 设置 的 页面上选择 在关闭全局范围分析时显示未使用的非私有类型成员 Ctrl+Alt+S。
解决方案范围分析 :在 JetBrains Rider 设置 的 页面上选择 启用解决方案级分析(_A) Ctrl+Alt+S。
请注意,即使报告的参数在您的解决方案中没有直接使用,也可能存在间接使用的情况——例如,通过反射——或者它可能只是被设计为公共 API。 在所有这些情况下,您可能希望通过以下方式之一 抑制参数的使用检查:
推荐的方法是使用 代码注解属性装饰隐式使用的参数。 为此目的有两个属性: [UsedImplicitly] 和 [PublicAPI] ,它们在功能上相似,但可以让您和您的团队成员了解参数的实际使用方式。
您还可以使用任何自定义属性来抑制使用检查。 为此,请使用 [MeansImplicitUse]属性标记该属性的定义。
最后,您可以像处理任何其他代码检查一样,通过 抑制注释或抑制属性来抑制特定的使用检查。