You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何配置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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.28 10:14:40