如何配置ReSharper以避免对标记NotNullAttribute的参数报空检查警告
关于ReSharper 2017.3.5空检查提示的解答
首先得明确:这些提示不是ReSharper的bug,是它基于你添加的注解做出的静态分析判断。你给参数bar标记了[NotNull]注解,这个注解会告诉ReSharper的分析器——“这个参数绝对不会传入null”,所以它会认为你写的if (bar == null)判断永远不会成立,对应的抛出异常代码自然也就被判定为“启发式不可达”了。
但你的顾虑完全正确:ReSharper的注解只是静态分析提示,编译器根本不会强制执行[NotNull]约束,运行时依然有可能通过反射调用、或者调用者不遵守注解规范等方式传入null,所以这个空检查确实是很有必要的运行时兜底手段。
想要关闭这些提示,有两种实用方案:
1. 全局调整提示级别
打开ReSharper的设置面板:
- 顶部菜单栏选择
ReSharper→Options - 导航到
Code Inspection→Inspection Severity - 在搜索框输入“Redundant null check”或者“Heuristic unreachable code”,找到对应的检查规则
- 将它的级别改成
Do not show(完全关闭),或者降低为Suggestion(仅轻量提示,不影响代码高亮)
2. 局部抑制单个位置的提示
如果不想全局修改规则,只想让当前方法里的提示消失,可以在空检查代码上方添加ReSharper的抑制注释:
public void Foo([NotNull] string bar) { // ReSharper disable once ConditionIsAlwaysTrueOrFalse // ReSharper disable once HeuristicUnreachableCode if (bar == null) throw new ArgumentNullException(); // do something }
总的来说,你保留空检查的做法很稳妥,通过上面两种方式就能轻松去掉这些不符合实际运行场景的提示啦。
内容的提问来源于stack exchange,提问作者N Jones
相关产品推荐
相关产品推荐

