Анализ кода в генерируемом генератором кода файле-как подавить предупреждения?


Мы запускаем анализ кода для всех наших исходных файлов. Один из наших исходных файлов-это сгенерированный файл Linq-to-SQL,который мы не можем контролировать. Сгенерированный код выдает предупреждения анализа кода, которые я хотел бы подавить. Есть ли способ подавить предупреждения CA в файле, созданном кодом, который не включает создание атрибутов и / или pragma в самом коде (которые будут перезаписываться каждый раз, когда файл создается)?

4 5

4 ответа:

Есть ли у ваших классов атрибут [GeneratedCode]? Если это так, вы можете заставить FxCop игнорировать их:

Использование проекта FxCop:

  1. Откройте свой проект FxCop в FxCop
  2. Выберите Проект - > Параметры - > Орфография И Анализ
  3. проверка подавления результатов анализа по сгенерированному коду
  4. Нажмите кнопку ОК

Через командную строку:

  1. передайте ключ /ignoregeneratedcode, например:
     FxCopCmd.exe /file:MyAssembly.dll /out:AnalysisResults.xml /ignoregeneratedcode

Http://blogs.msdn.com/fxcop/archive/2008/02/28/faq-how-do-i-prevent-fxcop-1-36-from-firing-warnings-against-generated-code.aspx

Вы можете обойти недостаток атрибута GeneratedCode, используя собственную ветвь разделяемых классов для применения этого атрибута. Это означает, что любой пользовательский код, который вы добавляете (включая реализацию частичных методов), будет исключен. Напр..:

namespace MyApp.DB {
    [GeneratedCode("LINQ To SQL", "4.0")]
    internal partial class MyAppDataContext {
    }

    // Repeat for each entity
}

Если вы используете графический интерфейс FxCop, вы можете просто исключить эти проблемы в рамках проекта FxCop. Просто щелкните правой кнопкой мыши вопрос и выберите исключить, где вы можете, чем также добавить комментарий.
но если вы запустите FxCop в окне вывода, я не имею понятия. Может быть, вы могли бы проверить, можно ли создать SuppressMessage уровня модуля и вставить его в AssemblyInfo.CS. Но я так не думаю.

В PLINQO (разделяемый) CodeSmith шаблоны также создать этот атрибут автоматически. Большинство надстроек также начинают игнорировать частичные классы, которые генерируются с помощью ".сгенерировано " в имени файла.

[система.граф CodeDOM.Компилятор.GeneratedCode ("CodeSmith", "5.0.0.0")]