Как интегрировать StyleCop в build-процесс? - CodeHelper

Как интегрировать StyleCop в build-процесс?

2

Как сделать так, чтобы предупреждения StyleCop показывались как ошибки билда в Visual Studio? Как правильнее интегрировать StyleCop в build-процесс?

Лучший ответ:

2

Для запуска проверки StyleCop во время билда нужно импортировать target-файл Microsoft.StyleCop.targets (поставляется вместе с StyleCop) в файле проекта.

<Import Project="Путь к папке StyleCop\Microsoft.StyleCop.targets" />

Путь к папке, где лежит файл Microsoft.StyleCop.targets, естественно специфичен для конкретной машины. Это неудобно если проект находится в репозитории и используется несколькими разработчиками. Для преодоления этого недостатка можно воспользоваться переменными среды или написать путь относительно проекта и держать все инструменты StyleCop в репозитории.

Чтобы предупреждения StyleCop стали ошибками билда нужно установить свойство StyleCopTreatErrorsAsWarnings в false. Делается это тоже в файле проекта (он же MSBuild-скрипт):

<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="3.5" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
  <PropertyGroup>
    <!-- ... -->
    <StyleCopTreatErrorsAsWarnings>false</StyleCopTreatErrorsAsWarnings>
  </PropertyGroup>

  <!-- ... -->

  <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
  <Import Project="Путь к папке StyleCop\Microsoft.StyleCop.targets" />
</Project>
Alexander

А чем эта штука отличается от ReSharper? Он же тоже проверяет стиль написания кода (форматирование и пр.)

admax

ReSharper больше относится к среде Visual Studio, в то время как StyleCop чаще используется на уровне continuous integration сервера — встраивается в процесс сборки. То есть задача ReSharper — помочь разработчику писать код, а задача StyleCop — проверять соблюдены ли командой стандарты кодирования.

v1.7.123.556
© 2009—2010 CodeHelper FAQ | О сайте | Обратная связь | История изменений | Статьи
Creative Commons LicenseМатериалы сайта распространяются под лицензией Creative Commons Attribution-Share Alike 3.0 Unported.