Skip to content

.NET — Tier 3 — Nice to Have ​

Tier 3 .NET checks verify polish and advanced configuration. Scored checks are worth 1 point each. Three checks are INFO only (no score impact). These checks only run when a .sln file is detected.

Scored Checks (1 pt each) ​

TreatWarningsAsErrors ​

SlugCategory
dotnet-warnings-as-errorsCode Quality

Treats all compiler warnings as errors, enforcing a zero-warning policy. Prevents warnings from accumulating and being ignored.


Deterministic Builds ​

SlugCategory
dotnet-deterministicBuild Config

<Deterministic>true</Deterministic> ensures identical source code produces identical binaries. Essential for reproducible builds and supply chain security.


SlugCategory
dotnet-sourcelinkPackaging

Embeds source repository metadata in NuGet packages, allowing debuggers to automatically download source code. Makes debugging third-party packages seamless.


Analyzers Configured ​

SlugCategory
dotnet-analyzersCode Quality

Detects whether Roslyn analyzers are configured (via <EnableNETAnalyzers> or explicit analyzer packages). Static analysis catches bugs and enforces coding standards at compile time.


AnalysisLevel ​

SlugCategory
dotnet-analysis-levelCode Quality

Checks that <AnalysisLevel> is set (e.g., latest-all or latest-recommended). Controls the aggressiveness of built-in .NET analyzers.


Benchmark Project ​

SlugCategory
dotnet-benchmarksTesting

Detects a BenchmarkDotNet project. Performance benchmarks prevent regressions and provide data-driven optimization decisions.


dotnet-tools.json ​

SlugCategory
dotnet-local-toolsBuild Config

Checks for .config/dotnet-tools.json, which pins local .NET tool versions. Ensures all developers use the same tool versions (formatters, analyzers, generators).


AOT Ready ​

SlugCategory
dotnet-aot-readyPackaging

Detects <PublishAot>true</PublishAot> or <IsAotCompatible>true</IsAotCompatible>. Native AOT compilation produces smaller, faster binaries with no JIT overhead.


InternalsVisibleTo ​

SlugCategory
dotnet-internals-visibleTesting

Detects [InternalsVisibleTo] attributes or <InternalsVisibleTo> in project files. Allows test projects to access internal members without making them public.


Multi-Targeting ​

SlugCategory
dotnet-multi-targetPackaging

Detects <TargetFrameworks> with multiple entries (e.g., net8.0;net9.0). Multi-targeting maximizes library compatibility across .NET versions.


INFO Checks (0 pts) ​

These checks are reported but do not affect the score. They provide useful context about the .NET solution.

Target Framework ​

SlugCategory
dotnet-target-frameworkBuild Config

Reports the target framework(s) used across the solution and flags end-of-life (EOL) versions. Informational only — framework choice depends on project requirements.


Package Count ​

SlugCategory
dotnet-package-countPackaging

Reports the total number of <PackageReference> entries across all projects. Provides a snapshot of dependency complexity. Not scored because dependency count alone doesn't indicate quality.


Build System ​

SlugCategory
dotnet-build-systemBuild Config

Detects custom build systems (NUKE, Cake, FAKE) alongside standard dotnet build. Informational — build system choice is a team preference.

Released under the MIT License.