Как выполнить анализ кода .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)