StyleCop and R# Integration
You can either write
your own rule library or use an existing extension like StyleCop+.
I’ve used StyleCop+ as it holds common rules and is an open source community project
so adding to it is easy. I’ve investigate the StyleCop+ rule SP2101
MethodMustNotContainMoreLinesThan below.
Versions
Visual Studio 2010
R# 5.1.3000.12 and 8.0.14.856
StyleCop 4.7.44.0 and 4.7.45.0
StyleCop+ 1.8
R# 8 and StyleCop with StyleCop+
R#8 will NOT work with StyleCop 4.7.44.0 only 4.7.45.0. If you want to use StyleCop+ 1.8 on top of this you need to change the assembly binding redirects in the Visual Studio 2010 config file (C:\Program Files (x86)\Microsoft Visual Studio 10.0\Common7\IDE\devenv.exe.config).
Make sure VS is closed and the StyleCopPlus.dll in C:\Program Files (x86)\StyleCop 4.7 has been deleted.
Under this XML...
Add this XML...
Place the StyleCopPlus.dll back in C:\Program Files (x86)\StyleCop 4.7 and Unblock it. Now open VS and everything should work!
R# 8 and StyleCop with StyleCop+
R#8 will NOT work with StyleCop 4.7.44.0 only 4.7.45.0. If you want to use StyleCop+ 1.8 on top of this you need to change the assembly binding redirects in the Visual Studio 2010 config file (C:\Program Files (x86)\Microsoft Visual Studio 10.0\Common7\IDE\devenv.exe.config).
Make sure VS is closed and the StyleCopPlus.dll in C:\Program Files (x86)\StyleCop 4.7 has been deleted.
Under this XML...
<runtime>
<UseSmallInternalThreadStacks enabled="true"/>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>
<assemblyIdentity name="StyleCop" publicKeyToken="f904653c63bc2738" />
<bindingRedirect oldVersion="4.5.0.0-4.5.99.99" newVersion="4.7.45.0" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="StyleCop.CSharp" publicKeyToken="f904653c63bc2738" />
<bindingRedirect oldVersion="4.5.0.0-4.5.99.99" newVersion="4.7.45.0" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="StyleCop.CSharp.Rules" publicKeyToken="f904653c63bc2738" />
<bindingRedirect oldVersion="4.5.0.0-4.5.99.99" newVersion="4.7.45.0" />
</dependentAssembly>
Place the StyleCopPlus.dll back in C:\Program Files (x86)\StyleCop 4.7 and Unblock it. Now open VS and everything should work!
R# Integration
With these versions installed you can edit the StyleCop+
rule SP2101 to reduce the lines from 120 to 20 to test its working. Open Settings.StyleCop
file (Located in folder of project(s) or solution) then go
to the StyleCop+ tab and select the rules to edit.
Open the R# options dialog and go to Code Inspection > Inspection Severity
and find the StyleCop+ rule to show as an error.
An you’re done!
Build Integration
You can use the MSBuild targets file (e.g. C:\Program
Files (x86)\MSBuild\StyleCop\v4.7\StyleCop.Targets) provided with
StyleCop to fail the build in Visual Studio for any
of the projects you set this up for. The problem with this is all
violations are set to error and you can’t target individual rules to break the
build.
The solution I think is to use TeamCity to read the XML
violations file (e.g. \obj\Debug\StyleCopViolations.xml)
generated after the build and then fail the CI build if it finds an individual
rule violation. For example if you find this in the file:
<Violation LineNumber="19" Source="C:\DevelopmentSVN\ATMS\Trunk\Isotrak.Zinc\Isotrak.Zinc.ATMS\Common\MapModelHelper.cs" RuleNamespace="StyleCopPlus.StyleCopPlusRules" Rule="MethodMustNotContainMoreLinesThan" RuleId="SP2101">Method body must not contain more than 20 code
lines (now 25).</Violation>
No comments:
Post a Comment