2014-09-09 9 views
0

Я знаю, что вы можете создать проект и использовать относительные пути, но я не хочу, чтобы файл проекта находился в управлении версиями. Скажем, ради краткости, что я хочу только запустить одно правило CA1001 из Microsoft.Design. Как я могу указать это с аргументами командной строки и заставить его работать в бегуне сборки TeamCity FxCop?Как запустить правила FxCop с помощью командной строки?

ответ

1

Существует опция командной строки /ruleid, которая может быть использована для этого. Он не отображается в разделе справки MSDN для параметров командной строки fxcopcmd.exe, но вы можете увидеть описание, запустив fxcopcmd.exe /?.

+0

Основываясь на приведенном выше правиле примера, как вы отформатируете его в соответствии с документацией? '/ ruleid: <[+ | -] Namespace.CheckId | Category # CheckId>' – Lunyx

+0

'fxcopcmd.exe/rule:" - <путь к папке правил FxCop> \ DesignRules.dll "/ruleid:"+Microsoft.Design# CA1001 "/ file:" <путь к сборке, которую вы хотите проанализировать> "' –

+0

Это действительно поддерживается? Я тестировал его в описанном вами синтаксисе, но он по-прежнему выполняет все правила в Microsoft.Design. – Lunyx

0

Инструмент находится в \ 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, как это.