0% found this document useful (0 votes)
1K views

Stylecop Aka Source Analysis (Or How To Start A Fight) : Guy Smith-Ferrier

StyleCop is a source code analyzer that checks for style and consistency issues in C# code. It includes over 150 predefined rules. The document discusses how to integrate StyleCop with Visual Studio, customize project settings, exclude files, and create custom rules. StyleCop can be extended by writing new rule classes and describing them in XML files.

Uploaded by

testingphase
Copyright
© Attribution Non-Commercial (BY-NC)
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
1K views

Stylecop Aka Source Analysis (Or How To Start A Fight) : Guy Smith-Ferrier

StyleCop is a source code analyzer that checks for style and consistency issues in C# code. It includes over 150 predefined rules. The document discusses how to integrate StyleCop with Visual Studio, customize project settings, exclude files, and create custom rules. StyleCop can be extended by writing new rule classes and describing them in XML files.

Uploaded by

testingphase
Copyright
© Attribution Non-Commercial (BY-NC)
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 21

StyleCop aka Source Analysis

(or How To Start A Fight)

Guy Smith-Ferrier
[email protected]
Blog: http://www.guysmithferrier.com
 Guy Smith-Ferrier 1
About…
 Author of .NET Internationalization
– Visit http://www.dotneti18n.com to
download the complete source code

 The .NET Developer Network


– http://www.dotnetdevnet.com
– Free user group for .NET developers,
architects and IT Pros based in Bristol

 DDD South West


– http://www.dddsouthwest.com
– Taunton, Saturday 23rd May 2009
 Guy Smith-Ferrier 2
Agenda
 Introduction To StyleCop
 Integration With Visual Studio
 Customizing StyleCop Project Settings
 Excluding Files From StyleCop Analysis
 'Favourite' StyleCop Rules
 Creating Custom StyleCop Rules

 Guy Smith-Ferrier 3
StyleCop
 A source code analyzer for C#
– StyleCop is to code what FxCop is to assemblies
– v4.2 released May 2008, v4.3 released August 2008
– Formerly known as Microsoft Source Analysis
– Includes 151 rules
– Integrates with Visual Studio 2005 and 2008
 Download
– http://code.msdn.microsoft.com/sourceanalysis
 Blog
– http://blogs.msdn.com/sourceanalysis  Guy Smith-Ferrier 4
Integration With Visual Studio
(1 of 2)
 When you install StyleCop you must include
msbuild support in the initial setup:-

 Guy Smith-Ferrier 5
Integration With Visual Studio
(2 of 2)
 To incorporate StyleCop into Visual Studio's build
process edit the .csproj and add the following
line:-
<Import Project="$(ProgramFiles)\MSBuild\Microsoft
\StyleCop\v4.3\Microsoft.SourceAnalysis.targets" />

 To treat StyleCop Warnings as errors add the


following line to a PropertyGroup:-
<SourceAnalysisTreatErrorsAsWarnings>false
</SourceAnalysisTreatErrorsAsWarnings>

 Guy Smith-Ferrier 6
MSBuild StyleCop Task
 To run StyleCop without building the
project use the StyleCop task:-
msbuild ConsoleApplication1.csproj /t:StyleCop

 Guy Smith-Ferrier 7
StyleCopCmd And NAnt
Support
 StyleCopCmd is a command line interface for
StyleCop
 Download StyleCopCmd and NAnt task from:-
– http://stylecopcmd.wiki.sourceforge.net/
 StyleCopCmd has options to:-
– Analyze multiple solution files
– Analyze folders and sub-folders
– Output results as XML
 Guy Smith-Ferrier 8
Customizing StyleCop Project
Settings
 You can enable, disable and configure StyleCop project
settings using the StyleCop Settings Editor:-

 Guy Smith-Ferrier 9
StyleCop And Generated Code
 The StyleCop Settings Editor has two settings
to configure analysis of generated code:-
– Analyze Designer Files (i.e. .Designer.cs)
– Analyze Generated Files (i.e. .g.cs)
 StyleCop always ignores regions with
'generated code' in the name
#region This is generated code (StyleCop will ignore this region)

 Guy Smith-Ferrier 10
<ExcludeFromStyleCop>
 You can exclude any file from StyleCop
analysis by changing its file reference in the
.csproj file from this:-
<Compile Include="Program.cs" />

 to this:-
<Compile Include="Program.cs">
<ExcludeFromStyleCop>true</ExcludeFromStyleCop>
</Compile>

 This affects msbuild only


 Guy Smith-Ferrier 11
ExcludeStyleCop.exe
 ExcludeStyleCop is a separate download from:-
 http://code.msdn.microsoft.com/sourceanalysis
 It is C# source that you build to create
ExcludeStyleCop.exe
 ExcludeStyleCop.exe changes all of the
compile references in all project files in the
current directory to include
<ExcludeFromStyleCop>
 Guy Smith-Ferrier 12
StyleFix
 StyleFix fixes
StyleCop errors
– http://stylefix.cod
eplex.com/
 Currently fixes 14
errors

 Guy Smith-Ferrier 13
StyleCop For Resharper
 StyleCop for ReSharper is a ReSharper plugin
– allows Microsoft StyleCop to be run as you type
– generates real-time syntax highlighting of violations

– automatically fixes 110 StyleCop issues during


ReSharper Code CleanUp
 Download from:-
– http://www.codeplex.com/StyleCopForReSharper
 Guy Smith-Ferrier 14
StyleCop SDK
 The StyleCop SDK provides
documentation on how to:-
– write StyleCop rules
– integrate with custom build
environments
 It is a separate download
 You need to Unblock it
before you can see the
content

 Guy Smith-Ferrier 15
Custom StyleCop Rules
 Follow these broad steps to create a rule:-
– Create a new Class Library
– Add a new rule class
– Add an XML file describing the rule
– Copy the assembly to the StyleCop folder

 Guy Smith-Ferrier 16
Create A StyleCop Rule Class
(1 of 2)
 Add a reference to Microsoft.StyleCop and
Microsoft.StyleCop.CSharp
 Add a rule class:-

[SourceAnalyzer(typeof(CsParser))]
public class CodeMustNotContainHardcodedStringsRule : SourceAnalyzer
{
public override void AnalyzeDocument(CodeDocument document)
{
// add code here
}
}

 Guy Smith-Ferrier 17
Create A StyleCop Rule Class
(2 of 2)
public override void AnalyzeDocument(CodeDocument document)
{
CsDocument csharpDocument = (CsDocument)document;
if (csharpDocument.RootElement != null &&
!csharpDocument.RootElement.Generated)
{
for (Node<CsToken> tokenNode = csharpDocument.Tokens.First;
tokenNode != null; tokenNode = tokenNode.Next)
{
if (tokenNode.Value.CsTokenType == CsTokenType.String)
{
this.AddViolation(csharpDocument.RootElement,
tokenNode.Value.LineNumber,
"CodeMustNotContainHardcodedStrings");
}
}
}
}

 Guy Smith-Ferrier 18
Describe The Rule
 Add an XML file to the project
– It must have the same name as the rule class
– Set the Build Action to Embedded Resource
<SourceAnalyzer Name="StyleCop Custom Rules">
<Description>
Custom rules
</Description>
<Rules>
<RuleGroup Name="String Rules">
<Rule Name="CodeMustNotContainHardcodedStrings" CheckId="GS1001">
<Context>The code should not contain any hard-coded strings.
</Context>
<Description>Validates that the code does not contain any hard-
coded strings.</Description>
</Rule>
</RuleGroup>
</Rules>
</SourceAnalyzer>
 Guy Smith-Ferrier 19
Future Releases Of StyleCop
 The following features may appear in a
future release:-
– StyleCop For Visual Basic.NET (and others ?)
– Automatically fix style errors

 Guy Smith-Ferrier 20
Summary
 Introduction To StyleCop
 Integration With Visual Studio
 Customizing StyleCop Project Settings
 Excluding Files From StyleCop Analysis
 'Favourite' StyleCop Rules
 Creating Custom StyleCop Rules

 Guy Smith-Ferrier 21

You might also like