Я знаю, что вы можете создать проект и использовать относительные пути, но я не хочу, чтобы файл проекта находился в управлении версиями. Скажем, ради краткости, что я хочу только запустить одно правило CA1001 из Microsoft.Design. Как я могу указать это с аргументами командной строки и заставить его работать в бегуне сборки TeamCity FxCop?Как запустить правила FxCop с помощью командной строки?
ответ
Существует опция командной строки /ruleid
, которая может быть использована для этого. Он не отображается в разделе справки MSDN для параметров командной строки fxcopcmd.exe
, но вы можете увидеть описание, запустив fxcopcmd.exe /?
.
Инструмент находится в \ FxCopCmd.exe. Список вариантов можно найти здесь. Все параметры должны быть добавлены с двоеточием и параметром (если есть), но без пробелов. Основная команда выглядит следующим образом.
FxCopCmd.exe /file:E:\My\Project\Precompiled\bin
/rule:"C:\Program Files (x86)\Microsoft FxCop 1.35\Rules" /out:fxcopreport.xml
Вы также можете применить несколько правил, как все, что нужно:
"C:\Program Files\Microsoft FxCop 1.35\FxCopCmd.exe"
/rule:"C:\Program Files\Microsoft FxCop 1.35\Rules\DesignRules.dll"
/rule:"C:\Program Files\Microsoft FxCop 1.35\Rules\GlobalizationRules.dll"
/rule:"C:\Program Files\Microsoft FxCop 1.35\Rules\InteroperabilityRules.dll"
/rule:"C:\Program Files\Microsoft FxCop 1.35\Rules\MobilityRules.dll"
/rule:"C:\Program Files\Microsoft FxCop 1.35\Rules\NamingRules.dll"
/rule:"C:\Program Files\Microsoft FxCop 1.35\Rules\PerformanceRules.dll"
/rule:"C:\Program Files\Microsoft FxCop 1.35\Rules\PortabilityRules.dll"
/rule:"C:\Program Files\Microsoft FxCop 1.35\Rules\SecurityRules.dll"
/rule:"C:\Program Files\Microsoft FxCop 1.35\Rules\UsageRules.dll"
/out:fxcopreport.xml
/summary
/file:"E:\MyProject\Model\bin\Debug\MyProject.dll"
/directory:"C:\Program Files\Reference Assemblies\Microsoft\Framework
\v3.5\System.Core.dll"
В приведенной выше команде, флаги являются:
/править путь к правилу DLL вы хотите включить.
/out В какой файл анализ должен быть сохранен.
/summary Делает FxCop включает краткое изложение в отчете.
/file Файл, который вы хотите проанализировать.
/directory По какой-то причине файл проекта не может помнить, где находится System.Core.dll. Чтобы избежать ошибок, вы можете указать DLL, как это.
Основываясь на приведенном выше правиле примера, как вы отформатируете его в соответствии с документацией? '/ ruleid: <[+ | -] Namespace.CheckId | Category # CheckId>' – Lunyx
'fxcopcmd.exe/rule:" - <путь к папке правил FxCop> \ DesignRules.dll "/ruleid:"+Microsoft.Design# CA1001 "/ file:" <путь к сборке, которую вы хотите проанализировать> "' –
Это действительно поддерживается? Я тестировал его в описанном вами синтаксисе, но он по-прежнему выполняет все правила в Microsoft.Design. – Lunyx