C#: Как настроить Fody Nullguard

Мы пытаемся использовать Fody Nullguard в нашем проекте, но даже после большого количества испытаний (и такого же количества ошибок) мы не запустили автоматическую проверку нуля.

Мы следовали инструкциям, указанным в репозитории github:

PM> Install-Package Fody
PM> Install-Package NullGuard.Fody

И настройте простой тестовый проект (во многих вариантах [например, ядро ​​.NET, .net framework, статические методы, нестатические методы...], ни один из них не работал) следующим образом:

static void TheFunc(string o)
{
  Console.WriteLine("I'm alive!");            
}

static void Main(string[] args)
{
  TheFunc(null);
   Console.ReadKey();
}

Мы также добавили файл XML FodyWeavers.xml со следующим содержимым:

<?xml version="1.0" encoding="utf-8"?>
<Weavers xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="FodyWeavers.xsd">
  <NullGuard Mode="Implicit" IncludeDebugAssert="false" />
</Weavers>

Тем не менее, исключений не возникает. Итак, вопрос в том, нужны ли какие-либо дальнейшие действия для запуска fody nullguard?

Во-первых, мы используем resharper. Возможно, это проблема?


person codefluent    schedule 19.03.2019    source источник
comment
Вы проверили вывод msbuild, чтобы убедиться, что fody работает и работает во время компиляции? Диагностик с фодами полно, худо-бедно показывает какие виверы запускали. Также вам, возможно, повезет с публикацией в проблемах NullGuard github.   -  person pinkfloydx33    schedule 19.03.2019
comment
Я думаю, проблема в том, что ваш метод не является общедоступным. По умолчанию NullGuard изменяет только общедоступные члены. Вы можете изменить это поведение, используя NullGuardAttribute   -  person sroll    schedule 13.11.2019


Ответы (1)


Старый вопрос, но я наткнулся на него, когда искал ответ на ту же проблему.

Выяснилось, что по умолчанию NullGuard выполняет проверку только для общедоступных членов (класс и метод должны быть общедоступными).

Вы можете либо сделать их общедоступными, либо изменить это поведение, добавив указанный ниже атрибут поверх файла, в котором вы выполняете инициализацию своего приложения.

...
using NullGuard;
[assembly: NullGuard(ValidationFlags.All)]
person Stokke    schedule 23.04.2020