2010-02-08 3 views
5

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

ответ

5

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

С помощью проекта FxCop:

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

С помощью командной строки:

  1. Pass переключатель/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

+0

делает SuppressMessage работает, если я позвоню в fxcopcmd.exe с помощью командной строки? – Kiquenet

+0

Да, он должен сделать – Paolo

0

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

+0

. Здесь есть еще один ответ в связанном с этим вопросе, который указывает, что вы можете добавить подавление уровня модуля в assemblyinfo.cs, но я просто попробовал его и не смог заставить его работать. Я могу добавить SuppressMessage к каждому индивидуальному методу, но это полная боль в шее, когда я хочу игнорировать ошибку для всего, что происходит в конкретной сборке. Надеюсь, кто-то ответит с решением этого! – Dave

2

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

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

    // Repeat for each entity 
} 
0

PLINQO (Linq-to-SQL) CodeSmith templates также автоматически генерирует этот атрибут для вас. Большинство надстроек также начинают игнорировать частичные классы, которые генерируются с помощью «.generated» в имени файла.

[System.CodeDom.Compiler.GeneratedCode ("CodeSmith", "5.0.0.0")]

Смежные вопросы