解决方案范围的代码检查
大多数 JetBrains Rider 的 代码检查 仅需要单个文件的源代码即可检测代码问题。 除了这些检查之外,JetBrains Rider 还提供了解决方案范围的检查,用于检测仅在整个解决方案范围内可检测的代码问题。例如,要检测未使用的非私有成员,JetBrains Rider 需要分析整个解决方案。
要使解决方案范围的检查生效,您需要启用以下至少一项功能:
简化的全局使用检查:在 JetBrains Rider 设置 的 页面上选择 在关闭全局范围分析时显示未使用的非私有类型成员 Ctrl+Alt+S。
解决方案范围分析 :在 JetBrains Rider 设置 的 页面上选择 启用解决方案级分析(_A) Ctrl+Alt+S。
请注意,即使报告的符号在您的解决方案中没有直接使用,也可能存在间接使用的情况——例如,通过反射——或者它可能只是被设计为公共 API。 在所有这些情况下,您可能希望通过以下方式之一 抑制符号的使用检查:
推荐的方法是使用 代码注解属性装饰隐式使用的符号。 为此目的有两个属性: [UsedImplicitly] 和 [PublicAPI] ,它们在功能上相似,但可以让您和您的团队了解符号的实际使用方式。
您还可以使用任何自定义属性来抑制使用检查。 为此,请使用 [MeansImplicitUse]属性标记该属性的定义。
最后,您可以像处理任何其他代码检查一样,通过 抑制注释或抑制属性来抑制特定的使用检查。
与任何其他检查类似,您还可以 禁用 或 更改严重性级别 的任何解决方案范围检查。 这可以直接在检查突出显示的代码问题的 Alt+Enter 菜单中完成。 或者,您可以在 JetBrains Rider 设置 的 页面上禁用/启用检查或更改严重性级别 Ctrl+Alt+S——解决方案范围检查带有 非私有可访问性 标签标记。 请注意,您无法为解决方案范围的检查设置“错误”严重性。
当启用解决方案范围分析时,解决方案范围检查检测到的问题会在打开的文件中以与其他问题相同的方式 高亮显示 ,并且当您 在特定范围内运行代码检查 时,它们也会出现在 问题窗口 中。 然而,它们不会出现在 所有解决方案文件 标签的 问题工具窗口 Alt+6 中。
如果需要,您可以禁用解决方案范围的检查,或者仅对 特定项目 的内部符号启用解决方案范围的检查。 为此,请在项目属性对话框的 检查 页面上使用 解决方案级检查 选择器(右键单击项目并选择 属性)。
请注意,无论此选择器中的值如何,如果在 JetBrains Rider 选项中禁用了解决方案范围分析,则解决方案范围的检查将被禁用。
JetBrains Rider 提供以下解决方案范围的检查:
检查 | 语言 | 默认严重性 |
|---|---|---|
C# | ||
类可以设为密封(不可继承)(非私有可访问性) | C# | |
将局部变量或字段转换为常量(非私有可访问性) | C# | |
C# | ||
C# | ||
C# | ||
C# | ||
C# | ||
C# | ||
C# | ||
C# | ||
C# | ||
C# | ||
C# | ||
抽象或虚拟(可重写)事件从未被调用 | C# | |
C# | ||
C# | ||
C# | ||
C# | ||
CQRS 上下文交叉。 从 Query 上下文中调用了 Command。 (在声明中显示) | C# | |
CQRS 上下文交叉。 从 Query 上下文中调用了 Command。 (在用法中显示) | C# | |
CQRS 上下文交叉。 从 Command 上下文中调用了 Query。 (在声明中显示) | C# | |
CQRS 上下文交叉。 从 Command 上下文中调用了 Query。 (在用法中显示) | C# | |
C# | ||
该方法从两个 CQRS 上下文中都被调用(在声明中显示) | C# | |
该方法从两个 CQRS 上下文中都被调用(在用法中显示) | C# | |
C# | ||
C# | ||
C# | ||
C# | ||
C# | ||
C# | ||
实体仅用于捕获其名称(非私有可访问性) | C# | |
C# | ||
参数仅用于前置条件检查(非私有可访问性) | C# | |
C# | ||
冗余的方法重载(非私有可访问性) | C# | |
C# | ||
C# | ||
C# | ||
类型成员仅在重写中使用(非私有可访问性) | C# | |
C# | ||
C# | ||
VB.NET | ||
类可以设为密封(不可继承)(非私有可访问性) | VB.NET | |
将局部变量或字段转换为常量(非私有可访问性) | VB.NET | |
VB.NET | ||
VB.NET | ||
VB.NET | ||
VB.NET | ||
VB.NET | ||
VB.NET | ||
VB.NET | ||
VB.NET | ||
VB.NET | ||
VB.NET | ||
抽象或虚拟(可重写)事件从未被调用 | VB.NET | |
VB.NET | ||
VB.NET | ||
VB.NET | ||
VB.NET | ||
VB.NET | ||
VB.NET | ||
VB.NET | ||
VB.NET | ||
VB.NET | ||
VB.NET | ||
实体仅用于捕获其名称(非私有可访问性) | VB.NET | |
VB.NET | ||
参数仅用于前置条件检查(非私有可访问性) | VB.NET | |
VB.NET | ||
VB.NET | ||
VB.NET | ||
VB.NET | ||
类型成员仅在重写中使用(非私有可访问性) | VB.NET | |
VB.NET | ||
VB.NET | ||
JavaScript | ||
JavaScript | ||
ASP.NET | ||
ASP.NET | ||
XAML | ||
XAML | ||
XAML | ||
XAML | ||
XAML | ||
HttpHandler or WebService | ||
HttpHandler or WebService |