Как выполнить анализ кода .NET 4 на сервере сборки
В Windows Server 2003 R2 с .NET 4 SDK, но без Visual Studio 2010, я попытался создать решение Visual Studio 2010 с помощью
msbuild MySolution.sln /p:RunCodeAnalysis=true
но это не удается.
Что требуется для запуска анализа кода в такой среде?
Я получаю это сообщение об ошибке:
C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v10.0\CodeAnalysis\Microsoft.CodeAnalysis.targets(129,9): error MSB6003:
The specified task executable "FxCopCmd.exe" could not be run.
Could not load file or assembly
'Microsoft.VisualStudio.CodeAnalysis.Sdk, Version=10.0.0.0, Culture=neutral, PublicKeyToken= b03f5f7f11d50a3a'
or one of its dependencies.
The system cannot find the file specified.
Я установил FxCop из SDK и без ведома указал переменную FxCopDir на установленное местоположение FxCopCmd.exe, а также установил эту запись в этом месте:
HKEY_LOCAL_MACHINE\Software\Microsoft\VisualStudio\10.0\Setup\[email protected]
Ответы
Ответ 1
У меня была такая же проблема на моем сервере MSBuild, и я исправил ее:
- Установка Windows SDK 7.1
- Настройка ключей реестра FxCopDir и StanDir в HKEY_LOCAL_MACHINE\Software\Microsoft\VisualStudio\10.0\Setup\EDev (в Win32).
Затем я перекодировал с dev-компьютера в папку FxCop на сервере сборки, следующее:
- Папка Наборы правил (цель установки по умолчанию находится здесь: C:\Program Files (x86)\Microsoft Visual Studio 14.0\Team Tools\Статические инструменты анализа \FxCop)
- Microsoft.VisualStudio.CodeAnalysis.Sdk.dll
- Microsoft.VisualStudio.CodeAnalysis.Phoenix.dll
- phx.dll
Сделайте поиск на своем компьютере разработчика с установленной Visual Studio, чтобы найти их.
Затем используйте версию gacutil.exe.NET 4.0 для установки Microsoft.VisualStudio.CodeAnalysis.Sdk.dll в GAC.
Затем вы можете выполнить анализ кода как часть сборки MSBuild и правильно ли работать.
Ответ 2
Альтернативой FxCop будет использование инструмента NDepend, который позволяет писать Правила кода по запросам LINQ С# (а именно CQLinq). Отказ от ответственности: я являюсь одним из разработчиков этого инструмента
По умолчанию предлагается 200 правил кода. Настройка существующих правил или создание собственных правил прямо из-за хорошо известного синтаксиса С# LINQ.
Правила могут быть проверены жить в Visual Studio и во время процесса сборки, сгенерированный отчет HTML + javascript.
Ответ 3
Другим вариантом может быть вызов исполняемого файла FxCop в качестве задачи сборки (из msbuildtasks), сохраняя результат как XML файл, который может анализируется в большинстве инструментов CI (например, Hudson и CC.NET)