2014-01-07 60 views
2

我想讓TeamCity構建我的C#解決方案並執行StyleCop,如果存在任何違規,則無法執行構建。我希望它的執行方式與在Visual Studio的「解決方案資源管理器」中右鍵單擊解決方案時相同,然後單擊「Run StyleCop」,但我希望將警告視爲錯誤。驗證TeamCity中的StyleCop

我試過this answer中的建議,但是我在實現它時遇到了一些問題。

的問題是:

<CreateItem Include="$(SourceFolder)\**\*.cs"> 

是包括在文件夾結構中的所有文件.cs併爲每個項目不尊重個人了StyleCop設置(例如要排除的文件)。

另一種選擇是有一個build.xml文件,以便它可以被MSBuild引用。但是,這意味着要維護XML文件以及.sln文件。我沒有找到this answer這意味着你可以包括像在XML解決方案引用,以便

<include name="MyTopSecretApplication.sln"/> 

但由於某種原因它不經過編譯的文件時,我有我的CreateItem設定爲

<CreateItem Include="@(Compile)"> 

如果設置了condition(根據下面)(理由是因爲XML文件包括.sln意味着編譯的文件沒有通過),理論上應該通過編譯的文件並尊重包含/排除設置。

Condition="('%(Compile.ExcludeFromStyleCop)' != 'true') and ('%(Compile.ExcludeFromSourceAnalysis)' != 'true')" 

有沒有好的方法可以讓我得到的MSBuild打造的TeamCity我的解決方案文件,驗證了StyleCop遵守規則,尊重每個項目的規則StyleCop的?

回答

2

因此,這裏是我如何得到這個在我的環境中工作

  • 獲得了StyleCop使用Visual Studio的工作,你想要的方式您的開發機器上。我使用NuGet軟件包來做這件事,但只要你有StyleCop問題時就會收到構建警告,那麼你就很好。
  • 若要將StyleCop警告轉化爲錯誤,請編輯每個csproj文件,並在相關的構建配置部分中創建一個StyleCopTreatErrorsAsWarnings元素,其值爲false,例如我只對Release版本執行此操作。有關詳細信息,請參閱this博客。
  • 只需讓TeamCity構建您的解決方案,並且由於StyleCop警告現在有錯誤,如果存在任何StyleCop問題,它將會失敗。