Анализ кода в генерируемом генератором кода файле-как подавить предупреждения?
Мы запускаем анализ кода для всех наших исходных файлов. Один из наших исходных файлов-это сгенерированный файл Linq-to-SQL,который мы не можем контролировать. Сгенерированный код выдает предупреждения анализа кода, которые я хотел бы подавить. Есть ли способ подавить предупреждения CA в файле, созданном кодом, который не включает создание атрибутов и / или pragma в самом коде (которые будут перезаписываться каждый раз, когда файл создается)?
4 ответа:
Есть ли у ваших классов атрибут [GeneratedCode]? Если это так, вы можете заставить FxCop игнорировать их:
Использование проекта FxCop:
- Откройте свой проект FxCop в FxCop
- Выберите Проект - > Параметры - > Орфография И Анализ
- проверка подавления результатов анализа по сгенерированному коду
- Нажмите кнопку ОК
Через командную строку:
- передайте ключ /ignoregeneratedcode, например:
FxCopCmd.exe /file:MyAssembly.dll /out:AnalysisResults.xml /ignoregeneratedcode
Вы можете обойти недостаток атрибута
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")]