I find code consistency important. Naming conventions, code formatting, … should all be aligned to make the code readable and consistent.
In .NET you can force this consistency through the .editorconfig file. (If you don’t have one in your projects, please stop reading and go add one first). This is not the first time I’m mentioning the .editorconfig file:
- https://bartwullems.blogspot.com/2017/04/visual-studio-2017editorconfig.html
- https://bartwullems.blogspot.com/2019/10/visual-studiogenerate-editorconfig-file.html
- https://bartwullems.blogspot.com/2019/12/editorconfig-let-private-fields-start.html
- https://bartwullems.blogspot.com/2019/10/visual-studio-2019code-cleanup.html
Today I want to take it one step further and enforce the coding style through our build pipeline. We’ll do this through a dotnet cli tool dotnet-format.
Let’s first install it:
dotnet tool update -g dotnet-format
Now you can browse to your solution or project folder invoke the tool using:
dotnet format
This will apply the code formatting rules defined in our .editorconfig to our code.
If we want to use it inside our builds, we probably don’t want to change the code itself. Instead we only want to check if the rules are followed. This can be done by adding an extra --check and --dryrun parameter:
dotnet format --check –dryrun
This is how the output should look like:
C:\Projects\mestbankportaal\MestbankPortaal\Mestbank.Core>dotnet format --check --dry-run
Formatting code files in workspace 'C:\Projects\mestbankportaal\MestbankPortaal\Mestbank.Core\Mestbank.Core.csproj'.
Warnings were encountered while loading the workspace. Set the verbosity option to the 'diagnostic' level to log warnings.
Domain\IE_ROL_FUNCTIE.cs(3,35): Fix whitespace formatting.
Services\GebruikerService.cs(25,37): Fix whitespace formatting.
Services\GebruikerService.cs(25,38): Fix whitespace formatting.
Services\MestbankAuthorizationService.cs(27,39): Fix whitespace formatting.
Services\MestbankAuthorizationService.cs(27,64): Fix whitespace formatting.
Services\MestbankAuthorizationService.cs(27,66): Fix whitespace formatting.
Services\MestbankAuthorizationService.cs(40,50): Fix whitespace formatting.
Services\MestbankAuthorizationService.cs(42,62): Fix whitespace formatting.
Services\MestbankAuthorizationService.cs(42,77): Fix whitespace formatting.
Services\MestbankAuthorizationService.cs(42,79): Fix whitespace formatting.
Services\MestbankAuthorizationService.cs(61,9): Fix whitespace formatting.
Formatted code file 'IE_ROL_FUNCTIE.cs'.
Formatted code file 'GebruikerService.cs'.
Formatted code file 'MestbankAuthorizationService.cs'.
Format complete in 3695ms.
A non-zero exit code is returned if any files would have been changed. Thanks to this we can easily use it in a dotnetcli task on our build agent.