Best way to integrate StyleCop with TFS CI

Slavo picture Slavo · Feb 17, 2009 · Viewed 11k times · Source

I've been doing research on how to enable source analysis for the project I'm working on and plan to use StyleCop. The setup I have is a TFS Server for source control, using TFS Continuous Integration. I want to enable source analysis for CI builds and daily builds run on the build machine, and not only for those run on developers' machines.

Here's an article from the documentation of StyleCop that I read on the subject: http://blog.newagesolution.net/2008/07/how-to-use-stylecop-and-msbuild-and.html. It basically modifies the csproj file for the purpose.

I've also read other opinions about how StyleCop should be integrated with build automation, which advise doing the same thing using build tasks:

http://blog.newagesolution.net/2008/07/how-to-use-stylecop-and-msbuild-and.html http://freetodev.spaces.live.com/blog/cns!EC3C8F2028D842D5!400.entry.

What are you opinions? Have you had similar projects and done something like this?

Answer

Igor Brejc picture Igor Brejc · Jun 25, 2009

Some points for using StyleCop in general:

  • You don't need to have StyleCop installed on your (or the build) machine - simply add StyleCop's binaries to your source control (about 1.5 MB of stuff)
  • Then simply add the relative reference to your project files, like this (I left out < and >):

    Import Project="..\..\lib\Microsoft StyleCop\Microsoft.StyleCop.Targets"

  • We treat all StyleCop warnings as errors using the StyleCopTreatErrorsAsWarnings setting in the project file.

  • For legacy projects, you can use the tool provided by Microsoft to automatically set all existing source files to ignore.
  • You can put the StyleCop settings file (Settings.StyleCop) in the root directory where your VS solution is (and of course place it under the source control). StyleCop knows how to find this file automatically (by loooking up the directory tree). This way you can have custom settings for each solution.
  • We turned off certain StyleCop rules which we think aren't very practical to follow.

This way StyleCop will be integrated in your compile step and as such it will become a part of the CI build.