Как запустить анализ кода .NET 4 на сервере сборки

На Windows Server 2003 R2 с .NET 4 SDK, но без Visual Studio 2010, я попытался создать решение Visual Studio 2010 с

msbuild MySolution.sln /p:RunCodeAnalysis=true

но это не удается.

Что требуется для запуска анализа кода в такой среде?


I get this error message:

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\EDev@FxCopDir

person Ole Lynge    schedule 19.06.2010    source источник
comment
Это работает для проекта C ++, но не для проекта C #.   -  person linquize    schedule 17.01.2014


Ответы (3)


У меня была такая же проблема на моем сервере MSBuild, и я исправил ее:

  • Установка Windows SDK 7.1
  • Настройка ключей реестра FxCopDir и StanDir в HKEY_LOCAL_MACHINE \ Software \ Microsoft \ VisualStudio \ 10.0 \ Setup \ EDev (в Win32).

Затем я скопировал с компьютера разработчика в папку FxCop на сервере сборки следующее:

  • Папка Наборы правил (цель установки по умолчанию находится здесь: C: \ Program Files (x86) \ Microsoft Visual Studio 14.0 \ Team Tools \ Static Analysis 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, чтобы он работал правильно.

person John Mills    schedule 27.06.2010
comment
Спасибо! Включение этих сборок и правил заставило меня работать. - person Ole Lynge; 28.06.2010
comment
Какое значение следует установить для StanDir? - person Zoltan Kochan; 15.10.2012
comment
если бы это сработало для кого-то с .NET 4.5 и проектами, созданными на VS 2012, не могли бы вы поделиться пошаговыми инструкциями? - person Greg Z.; 03.10.2013

Альтернативой FxCop было бы использование инструмента NDepend, который позволяет писать правила кода поверх запросов C # LINQ (а именно CQLinq ). Отказ от ответственности: я один из разработчиков инструмента

По умолчанию предлагается более 200 правил кода. Благодаря хорошо известному синтаксису C # LINQ легко настроить существующие правила или создать свои собственные.

Правила можно проверить в Visual Studio и во время процесса сборки в сгенерированный отчет HTML + javascript.

person Patrick from NDepend team    schedule 19.10.2010

Другой вариант - вызвать исполняемый файл FxCop в качестве задачи сборки (из msbuildtasks) с сохранением результата в виде файла XML. которые можно проанализировать с помощью большинства инструментов CI (таких как Hudson и CC.NET)

person alexandrul    schedule 22.06.2010