Анализ кода в файле, сгенерированном генератором кода - Как подавить предупреждения? - PullRequest
5 голосов
/ 08 февраля 2010

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

Ответы [ 4 ]

5 голосов
/ 08 февраля 2010

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

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

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

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

  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

2 голосов
/ 29 апреля 2010

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

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

    // Repeat for each entity
}
0 голосов
/ 08 февраля 2010

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

...