如何强制执行空检查?

Jul*_*iet 14 c# null static-analysis nullreferenceexception

我正在开展一个大型项目,即使有1000次自动测试和100%代码覆盖率,我们也会得到一些荒谬的错误.我们得到的大约95%的错误是NullReferenceExceptions.

有没有办法在编译时强制执行空值检查?

除此之外,有没有办法在单元测试中自动执行空值检查而不必自己编写空案例的测试?

Jon*_*eet 18

您应该查看代码合同.静态检查器仅适用于高端VS版本,但这基本上就是你所追求的.

网上有大量资源,<plug>你也可以从第二版C#深度阅读有关代码合同章节的预发布版本 - 免费下载第15章.</plug>(关于代码合同的最新和最大版本,该章略有过时,但没有什么大的.)


Art*_*tru 6

C# 8 引入了不可空引用类型

可以修改 .Net 项目以启用Nullable选项:

<LangVersion>8.0</LangVersion>
<Nullable>enable</Nullable>
Run Code Online (Sandbox Code Playgroud)

编译器就能区分

  • stringstring?

  • NonNullableClassNullableClass?