Sunday, 25 January 2015

Stylecop with TFS Build without Changing Build Template

How to setup TFS builds to validate stylecop code standards? One way to implement using alteration to TFS build templates. Below few posts give good explanation on how to do this with TFS build template modification
https://msdn.microsoft.com/en-us/magazine/dn451443.aspx
http://www.towfeek.se/2014/05/customize-your-tfs-build-process-to-run-stylecop/
http://tfsbuildextensions.codeplex.com/wikipage?title=How%20to%20integrate%20the%20extensions%20into%20a%20build%20template&referringTitle=Documentation
Is there a way to do this without build template alteration? Of course yes, thanks to StyleCop.MSBuild by Adam Ralph  this is possible now (Brief introduction on Stylecop.msbuild here).
Let’s have a look at step by step how to setup stylecop with TFS builds.
Right click on the Visual Studio solution Go to “Manage NuGet Packages for Solution”.

1
Search for stylecop. Stylecop.MSBuild will be in the results.
2
Click on Install and it will download StyleCop.MSBuild.
3
Select available projects in the solution and click OK. If new projects added to solution they can be selected by going to “Manage NuGet Packages for Solution”. Click on Manage installed package and select the new projects available.
4_1
SyleCop.MSBuild will be installed for selected projects.
5
This will add packages folder to the solution.
6
7

Right click on packages folder and undo pending changes. Undo changes will not remove the package folder from local folder and will be available to for the solution in this machine.
7_1
 7_2
7_2_1
This will prevent packages folder and contents being checked in to TFS. It is possible to set this package to automatically downloaded when the solution built.
 7_3
A file packages.config will be added to each project in the solution and make sure to check this in.
8
Project file (.csproj) will be modified to add required configurations for StyleCop.
9

Right click on the solution and enable nuget package restore for the solution. This will allow other team members to automatically download NuGet packages of the solution when it is built.

7_6

This will add few files to solution and change the .csproj files.

7_7

7_8


When the project is built the StyleCop violations are shown.
10
After fixing all violations in code still three violations shown based on temporary files generated when building .Net framework 4.5 projects.
11
12
Below link suggests few ways to fix this issue.
http://stackoverflow.com/questions/12405619/temporarygeneratedfile-guid-in-obj-debug-breaking-build
Out of them best solution is adding option to ignore the temporary files in the .csproj file. Since .csproj file will be checked in this fix will be available for other team members and build agents.
Unload project and edit to change the .csproj file.
13
14
Add

<ItemGroup>
<ExcludeFromStyleCop Include="$(IntermediateOutputPath)\**\*.cs" >
<Visible>False</Visible>
</ExcludeFromStyleCop>
</ItemGroup>

as shown below inside the StyleCop section added by the StyleCop.MSBuild installation.

15

Reload project.

16


Now all violations are fixed.

17

To verify StyleCop violations still validated after the above fix for temporary files, purposefully create a violation and verify.

18 


19



Fix the violation and check in the solution to TFS. A CI build using default build template runs successfully.

20


To verify TFS build gives warning when there is a StyleCop violation purposefully create a violation and check in.

21

Local build in VS show violation.

22



CI build shows SA1515 violation as a warning.

23

To make this violation to fails the build, add below to .csproj StyeCop added property group.

<StyleCopTreatErrorsAsWarnings>
    false
</StyleCopTreatErrorsAsWarnings>

24


This will make the violation to fail the build locally.

25

CI Build also fails with StyleCop violation.

26

SuppressMessage can be added to code (Method or Class level) and works fine with local builds and TFS builds.

29

 30

31

Using StyleCop.MSBuild it is possible to run StyleCop with TFS builds without altering build templates and without installing StyleCop in TFS Build Agents.

Thursday, 22 January 2015

TFS 2013.4 Version Control – Enhanced Web Portal – Part 2

I have explained few of the enhancements available in TFS Web Portal for Version Control in Part 1. There are lot more really useful enhancements available.

1. It is possible to view a file as of in a given changeset and download the changeset version of the file to local machine.
18
2. Explore as a changeset version allows to view entire solution as of that particular version.
18_1
18_2

As of changeset version can be explored.
18_3
3. Download a solution as of a changeset version.
18_4
4. Annotate a chageset version of a file.
19 20

5. Compare a file for given two changesets.
21
6. Shelveset exploring has similar capabilities to changesets except few like explore as of version which is obvious since it is not committed, so no version is available.
22 23
View shelveset content, add comments/discussions, download shelveset file(s), compare with changesets are few of the available features.
23_1  23_2
7. Sharing a changeset as an email, enhances team collaboration.
24
25

Can share with multiple team members and add more custom content to email is possible.
26

Discussions etc. of the changeset are shrared via email and links are added for easy access.
27
8. Similar to changeset a shelveset can also be shared via email.
28
9. Rename history of the files can be viewed and show hide options available.
29
10. Branched history of file can be viewed with show hide options.
30
Let’s have look in to more new useful features of TFS2013.4 in coming posts.