CA0001:对象引用未设置为对象的实例

本文关键字:对象 实例 设置 对象引用 CA0001 | 更新日期: 2023-09-27 18:35:53

请先阅读问题,然后再将其标记为重复,因为"对象引用未设置为对象的实例"

我用SonarQube运行一个构建。我收到以下错误:

CA0001 : Rule=Microsoft.Design#CA1011, Target=Company.Project.Service.Report.Wrappers.Helper.ReportPrintingOrderDriver`2.#DrivePrintingProcess(Company.Product.Service.Contracts.Report.CommonExportReportRequest,Company.Project.Common.Containers.LIHierarchy`3<!0,!1,System.Int32>,Company.Project.Service.Report.Wrappers.Helper.ReportPrintingOrderDriver`2<!0,!1>+IReportPrintingOrderDriven) : Object reference not set to an instance of an object.

自从我在SonarQube中打开NDepend Analysis以来,就会发生此错误。我尝试通过将文件添加到 SonarQube 分析范围内的源文件排除项来从分析中排除该文件。当这不起作用时,我在 csproj 文件中添加了一个排除项:

<Compile Include="Wrappers'Helper'ReportPrintingOrderDriver.cs" >
        <!-- Exclude the file from analysis -->
       <SonarQubeExclude>true</SonarQubeExclude>
</Compile>

但不幸的是,错误仍然不断弹出。当我为项目运行 Visual Studio 代码分析时,出现了相同的错误。所以我认为这与NDepend无关。关闭所有 NDepend 规则后,错误仍使生成失败。

NDepend 支持将我推荐到以下网站

它无法分析的类是这样开始的:

public class ReportPrintingOrderDriver<TInnerNode, TDataNode> where TDataNode : IComparable<TDataNode>, IMergeable<TDataNode>
    {
      ...
    }

有什么建议可以摆脱这个错误吗?

CA0001:对象引用未设置为对象的实例

我没有办法修复此错误。但是有一个解决方法。这是当泛型类包含并使用接口时发生的Microsoft代码分析的已知问题。该问题可以在Microsoft连接上找到。链接的问题包含一个重现问题的附件。

解决方法是提取接口并在泛型类外部定义它。