使用注解优化代码检查
代码检查和许多其他 ReSharper 功能在很大程度上依赖于了解语言结构的行为,以检测问题、提出可能的改进建议,并以其他方式为您提供帮助。
然而,这种分析无法检测到所有问题。 例如,如果一个方法被设计为格式化方法,那么如果方法调用中缺少必要的参数,结构分析将无法发现可能的问题。
在这种情况下以及许多其他情况下,ReSharper 的 JetBrains.Annotations 非常有帮助。 通过使用此框架中声明的属性,您可以使 ReSharper 按照您的需求分析代码。 例如,您可以使用 [StringFormatMethod] 注解一个方法,以指示自定义方法与 System.String.Format() 的工作方式相同:
这是最简单的示例,还有其他具有更复杂用例的有用属性。 您可以在 参考中找到这些属性的完整列表。
在大多数情况下,代码注解属性启用特定的 代码检查 ,例如:
StringFormatMethodAttribute有助于 检测字符串格式化方法的误用。CanBeNullAttribute和NotNullAttribute与“可能将 'null' 分配给标记为 'Value cannot be null' 属性的实体”检查相关联。 有关更多信息,请参阅 值和可空性分析。CannotApplyEqualityOperatorAttribute绑定到“ 与 '==' 比较标记为 'CannotApplyEqualityOperatorAttribute' 的类型 ”检查ContractAnnotationAttribute可用于 定义函数的契约并启用相应的检查。 例如,您可以使用[ContractAnnotation("input:null => false")]通知函数的使用者bool Foo(object input)在参数s为null时始终返回false。
此外,代码注解还可以在注解的项目上启用更多 快速修复、 代码补全建议和 代码生成功能。 注解还需要用于创建和使用 源模板。
ReSharper 允许您通过两种方式注解代码符号:
您可以按照上面的示例在源代码中注解符号。 在这种情况下,您需要在项目中引用
JetBrains.Annotations命名空间。 有关更多信息,请参阅 源代码中的注解。即使您无法访问源代码,您也可以在已编译的库代码中注解符号。 更多信息请参阅 外部注解。
此功能在以下语言和技术中 受支持:
此处提供的说明和示例针对在 C# 中使用该功能。 有关其他语言的更多信息,请参阅 语言和框架 部分中的相应主题。