Belp.Formatting
1.1.0
dotnet add package Belp.Formatting --version 1.1.0
NuGet\Install-Package Belp.Formatting -Version 1.1.0
<PackageReference Include="Belp.Formatting" Version="1.1.0"> <PrivateAssets>all</PrivateAssets> <IncludeAssets>runtime; build; native; contentfiles; analyzers</IncludeAssets> </PackageReference>
paket add Belp.Formatting --version 1.1.0
#r "nuget: Belp.Formatting, 1.1.0"
// Install Belp.Formatting as a Cake Addin #addin nuget:?package=Belp.Formatting&version=1.1.0 // Install Belp.Formatting as a Cake Tool #tool nuget:?package=Belp.Formatting&version=1.1.0
Belp.Formatting
An unofficial bundle of formatting tools to enforce writing C# in the most conventional manner possible.
The package deviates from Microsoft's established conventions in several areas. For example,
_camelCase
for private fields.PreEvent
/PostEvent
orBeforeEvent
/AfterEvent
instead ofEventing
/Evented
.
Furthermore, the opinion of this package on some disputed C# conventions are as follows,
- Explicit type over var unless evident.
IEnumerable<string> x = GetNames(); var y = (string)obj; var z = new object(); object a = new(); int b = 2; var c = 3L;
- All methods must use block bodies, as opposed to expression bodies. However, properties may use either block bodies or expression bodies.
- All selective statements(if, switch), loop statements(while, for), and other similar statements must be accompanied by curly braces.
One notable exception is a series of using statements after another.
// Permitted using (null) using (null) using (null) { } // Permitted using (null) { using (null) { using (null) { } } }
- No parentheses or grouping constructs unless necessary.
- Switch case contents must be wrapped in {} and must have the break statement placed outside the curly braces if possible.
Comment Legend
#§ Analyzers section
#¶ Analyzers subsection
#: Analyzer description
#> Link to documentation
#! Per-project configuration
#? Per-user configuration
#- Removed
#X Superseded by another analyzer
#/ Miscellaneous comment
Some common reasons for an analyzer to be disabled is as follows,
- Situational: the analyzer is sometimes useful and sometimes not.
- Subjective: the reported issue is decided by the opinions of the developer.
- Too broad: the analyzer reports too many false positives
Installation
Requirements
- .NET SDK 8 or newer
Install using an Editor
- Locate the project file(for example,
Project.csproj
,Project.fsproj
). - Open the project file in an editor.
- Locate the an
<ItemGroup>
. - Add a new
PackageReference
element to the item group with theInclude
attribute set toBelp.Formatting
and theVersion
attribute set to0.0.1
or a version of choosing. For example,<PackageReference Include="Belp.Formatting" Version="0.0.1" />
. - Run
dotnet restore
.
Uninstallation
- Locate the project file(for example,
Project.csproj
,Project.fsproj
). - Open the project file in an editor.
- Locate the
PackageReference
element with anInclude
attribute set toBelp.Formatting
. - Delete the element.
Install using the .NET CLI
- Open a terminal.
- Navigate to the containing directory of the project file.
- Run the command
dotnet add package Belp.Formatting
.
Uninstallation
- Open a terminal.
- Navigate to the containing directory of the project file.
- Run the command
dotnet remove package Belp.Formatting
.
Install using Visual Studio Package Manager
- Open Visual Studio.
- Right click the project in the Solution Explorer.
- Click on "Manage NuGet Packages".
- Go to the "Browse" tab.
- Search for
Belp.Formatting
. - Install.
Uninstallation
- Open Visual Studio.
- Right click the project in the Solution Explorer.
- Click on "Manage NuGet Packages".
- Go to the "Installed" tab.
- Click on
Belp.Formatting
. - Click on "Uninstall".
Usage
The package automatically configures the formatting upon installation.
Development
Prerequisites
- Install the .NET 8.0 SDK version 8.0.100 or newer.
Building with Visual Studio
- Open
Belp.Formatting.sln
. - Open the Solution Explorer.
- Right click on the project
Belp.Formatting
in the Solution Explorer. - Click on
Pack
.
Building with .NET CLI
- Open a terminal in the repository root.
- Run
dotnet pack
Output
By default, the output is located in src/Belp.Formatting/Belp.Formatting/bin/Release/
.
Product | Versions Compatible and additional computed target framework versions. |
---|---|
.NET | net5.0 was computed. net5.0-windows was computed. net6.0 was computed. net6.0-android was computed. net6.0-ios was computed. net6.0-maccatalyst was computed. net6.0-macos was computed. net6.0-tvos was computed. net6.0-windows was computed. net7.0 was computed. net7.0-android was computed. net7.0-ios was computed. net7.0-maccatalyst was computed. net7.0-macos was computed. net7.0-tvos was computed. net7.0-windows was computed. net8.0 was computed. net8.0-android was computed. net8.0-browser was computed. net8.0-ios was computed. net8.0-maccatalyst was computed. net8.0-macos was computed. net8.0-tvos was computed. net8.0-windows was computed. net9.0 was computed. net9.0-android was computed. net9.0-browser was computed. net9.0-ios was computed. net9.0-maccatalyst was computed. net9.0-macos was computed. net9.0-tvos was computed. net9.0-windows was computed. |
.NET Core | netcoreapp2.0 was computed. netcoreapp2.1 was computed. netcoreapp2.2 was computed. netcoreapp3.0 was computed. netcoreapp3.1 was computed. |
.NET Standard | netstandard2.0 is compatible. netstandard2.1 was computed. |
.NET Framework | net461 was computed. net462 was computed. net463 was computed. net47 was computed. net471 was computed. net472 was computed. net48 was computed. net481 was computed. |
MonoAndroid | monoandroid was computed. |
MonoMac | monomac was computed. |
MonoTouch | monotouch was computed. |
Tizen | tizen40 was computed. tizen60 was computed. |
Xamarin.iOS | xamarinios was computed. |
Xamarin.Mac | xamarinmac was computed. |
Xamarin.TVOS | xamarintvos was computed. |
Xamarin.WatchOS | xamarinwatchos was computed. |
-
.NETStandard 2.0
- IDisposableAnalyzers (>= 4.0.8)
- Roslynator.Analyzers (>= 4.12.11)
- Roslynator.CodeFixes (>= 4.12.11)
- Roslynator.Formatting.Analyzers (>= 4.12.11)
- Roslynator.Refactorings (>= 4.12.11)
- StyleCop.Analyzers.Unstable (>= 1.2.0.556)
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.
## 🆕 Features
- Added overrides for TUnit-based test projects
- Automatically suppressed [`CA1062: Validate arguments of public methods`](https://learn.microsoft.com/en-us/dotnet/fundamentals/code-analysis/quality-rules/ca1062), because it activates on TUnit test cases, which need to be public but are not meant to be consumed. Therefore, the security and integrity gained by validating arguments is negligible.
- Automatically suppressed [`CA1822: Mark members as static`](https://learn.microsoft.com/en-us/dotnet/fundamentals/code-analysis/quality-rules/ca1822), because TUnit test cases need to be instance methods despite often not accessing instance data.
- Automatically suppressed [`CS1591: Missing XML comment for publicly visible type or member 'Type_or_Member'`](https://learn.microsoft.com/en-us/dotnet/csharp/language-reference/compiler-messages/cs1591), because it activates on TUnit test cases, which need to be public but are not meant to be consumed. The suppression can be removed by setting the `SuppressMissingDocumentationWarnings` property to false.
- Automatically suppressed [`IDE0058: Remove unnecessary expression value`](https://learn.microsoft.com/en-us/dotnet/fundamentals/code-analysis/style-rules/ide0058), because TUnit asserts return a non-void value and having to prefix all asserts with `_ =` unnecessarily increases verbosity.
- Disabled the naming rule which required asynchronous methods to be suffixed by `Async`.
- Automatically unregistered formatting analyzers (of `StyleCop.Analyzers.Unstable` and `Roslynator.Formatting.Analyzers`) in builds where the `EnforceCodeStyleInBuild` property isn't set to `true`.
- Appended severities to all .editorconfig options which support it (such as `dotnet_style_qualification_for_field = false:warning`), so that the severities of diagnostics are consistent across `dotnet build`, `dotnet format`, and the IDE.
- Disabled [`SA1512: A single-line comment within C# code is followed by a blank line.`](https://github.com/DotNetAnalyzers/StyleCopAnalyzers/blob/ac00d09658078f3f4d41cbdd0e4b6d8540f0194f/documentation/SA1512.md), because it is situational.
- Enabled [`CA2022: Avoid inexact read with Stream.Read`](https://learn.microsoft.com/en-us/dotnet/fundamentals/code-analysis/quality-rules/ca2022).
- Enabled [`CA2265: Do not compare Span<T> to null or default`](https://learn.microsoft.com/en-us/dotnet/fundamentals/code-analysis/quality-rules/ca2265).
- Modified [`RCS1014: Use explicitly/implicitly typed array`](https://josefpihrt.github.io/docs/roslynator/analyzers/RCS1014) to prefer [collection expressions](https://learn.microsoft.com/en-us/dotnet/csharp/language-reference/operators/collection-expressions).
- Made NuGet security auditing mandatory.
- Updated Roslynator from [`v4.12.10`](https://github.com/dotnet/roslynator/releases/tag/v4.12.10) to [`v4.12.11`](https://github.com/dotnet/roslynator/releases/tag/v4.12.11).
## 🐞 Fixes