CA0001: ссылка на объект не установлена ​​на экземпляр объекта

Пожалуйста, прочитайте вопрос сначала, прежде чем пометить его как дубликат для "Ссылка на объект не установлена ​​на экземпляр объекта"

Я запускаю сборку с 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.

Ошибка происходит, так как я включил NDepend Analysis в SonarQube. Я попытался исключить файл из анализа, добавив его в список исключений исходного файла в области анализа 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>
    {
      ...
    }

Любые предложения, как избавиться от этой ошибки?

1 ответ

Решение

У меня нет способа исправить эту ошибку. Но есть обходной путь. Это известная проблема анализа кода Microsoft, которая возникает, когда универсальный класс содержит и использует интерфейс. Проблема может быть найдена в Microsoft Connect. Связанная проблема содержит Приложение, которое воспроизводит проблему.

Обходной путь - извлечь интерфейс и определить его вне универсального класса.

Другие вопросы по тегам