解决方案范围的代码检查
大多数 ReSharper 的 代码检查 只需要单个文件的源代码即可检测代码问题。 除了这些检查之外,ReSharper 还提供了解决方案范围的检查,用于检测仅在整个解决方案范围内可检测的代码问题。例如,要检测未使用的非私有成员,ReSharper 需要分析整个解决方案。
要使解决方案范围的检查生效,您需要启用以下至少一项:
简化的全局使用检查:在 ReSharper 选项 Alt+R, O 的 页面上选择 当解决方案范围分析关闭时,显示未使用的非私有类型成员。
解决方案范围分析 :在 ReSharper 选项 的 页面上选择 启用解决方案级分析(_A) Alt+R, O 。
请注意,即使报告的符号在您的解决方案中没有直接使用,也可能存在间接使用的情况——例如,通过反射——或者它可能只是设计为公共 API。 在所有这些情况下,您可能希望通过以下方式之一 抑制 符号的使用检查:
推荐的方法是使用 代码注解属性 装饰隐式使用的符号。 为此目的有两个属性: [UsedImplicitly] 和 [PublicAPI] ,它们在功能上相似,但可以让您和您的团队成员了解符号的实际使用方式。
您还可以使用任何自定义属性抑制使用检查。 为此,请使用 [MeansImplicitUse]属性标记该属性的定义。
最后,您可以像对待任何其他代码检查一样,通过 抑制注释或抑制属性来抑制特定的使用检查。
与任何其他检查类似,您还可以 禁用 或 更改严重性级别 任何解决方案范围的检查。 这可以直接在检查突出显示的代码问题的 Alt+Enter 菜单中完成。 Alternatively, you can disable/enable or change severity levels of inspections on the page of ReSharper 选项 Alt+R, O — solution-wide inspections are marked with the 非私有可访问性 label. 请注意,您无法为解决方案范围的检查设置“错误”严重性。
当启用解决方案范围分析时,解决方案范围检查检测到的问题会像其他问题一样在打开的文件中 高亮显示 ,并且它们也会出现在 检查结果窗口 中,当您 在特定范围内运行代码检查 时。 然而,它们不会出现在“解决方案中的错误/警告”窗口中。
如果需要,您可以禁用解决方案范围的检查,或者仅对 特定项目 的内部符号启用解决方案范围的检查。 为此,请使用 解决方案级检查 选择器,该选择器位于 项目条目属性 弹出窗口中,您可以通过从解决方案资源管理器中项目的上下文菜单中选择 编辑项目项属性 调出该弹出窗口。
请注意,无论此选择器中的值如何,如果在 ReSharper 选项中禁用了解决方案范围分析,则解决方案范围的检查将被禁用。
ReSharper 提供以下解决方案范围的检查:
检查 | 语言 | 默认严重性 |
|---|---|---|
C# | ||
类可以设为密封(不可继承)(非私有可访问性) | C# | |
局部变量或字段可以转换为常量(非私有可访问性) | C# | |
C# | ||
C# | ||
C# | ||
C# | ||
C# | ||
C# | ||
C# | ||
C# | ||
C# | ||
C# | ||
C# | ||
抽象或虚拟(可重写)事件从未被调用 | C# | |
C# | ||
C# | ||
C# | ||
C# | ||
CQRS 上下文交叉。 Command 从 Query 上下文中调用。 (show on declarations) | C# | |
CQRS 上下文交叉。 Command 从 Query 上下文中调用。 (show on usages) | C# | |
CQRS 上下文交叉。 Query 从 Command 上下文中调用。 (show on declarations) | C# | |
CQRS 上下文交叉。 Query 从 Command 上下文中调用。 (show on usages) | 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 |