Add Roslynator, SonarAnalyzer.CSharp, Meziantou.Analyzer, and AsyncFixer as central analyzer references (Directory.Build.targets, CPM-versioned, guarded on ManagePackageVersionsCentrally so the gitignored .mcp tool isn't affected). .editorconfig defaults dotnet_analyzer_diagnostic.severity to `suggestion` so the packs surface findings without failing the TreatWarningsAsErrors (TWAE) build; rules are promoted to warning/error incrementally (promotion = enforcement via the existing TWAE build, so no separate lint step is needed). StyleCop.Analyzers is intentionally excluded: its latest stable (1.1.118) crashes (AD0001) on C# records and overlaps the existing .editorconfig/Roslynator. Blazor .razor: editorconfig severity overrides don't reach analyzer diagnostics in Razor @code (source-generator limitation; dotnet format can't fix them either), so the currently-firing SonarAnalyzer rules are temporarily NoWarn-ed in ErsatzTV.csproj and burned down rule-by-rule in #25. The same rules run at suggestion on .cs. Formatting normalization (mixed UTF-8 BOM + whitespace) is deferred to its own PR. Full-solution Release build green (0 errors, 0 warnings). Refs #15 Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
42 lines
2.3 KiB
XML
42 lines
2.3 KiB
XML
<Project>
|
|
<PropertyGroup>
|
|
<EnableThreadingAnalyzers Condition="'$(EnableThreadingAnalyzers)' == ''">false</EnableThreadingAnalyzers>
|
|
</PropertyGroup>
|
|
|
|
<ItemGroup>
|
|
<PackageReference
|
|
Include="Microsoft.VisualStudio.Threading.Analyzers"
|
|
Condition="'$(EnableThreadingAnalyzers)' == 'true'">
|
|
<PrivateAssets>all</PrivateAssets>
|
|
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
|
|
</PackageReference>
|
|
</ItemGroup>
|
|
|
|
<!-- Curated static-analysis packs (ersatztv#15), applied to every project. Versions are
|
|
central (Directory.Packages.props / CPM). Guarded on CPM so the gitignored .mcp tool
|
|
(which opts out of CPM) doesn't pull versionless references. They start at `suggestion`
|
|
severity in .editorconfig so they don't fail the TreatWarningsAsErrors build; high-value
|
|
rules are promoted to warning/error incrementally. -->
|
|
<ItemGroup Condition="'$(ManagePackageVersionsCentrally)' == 'true'">
|
|
<PackageReference Include="Roslynator.Analyzers">
|
|
<PrivateAssets>all</PrivateAssets>
|
|
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
|
|
</PackageReference>
|
|
<PackageReference Include="SonarAnalyzer.CSharp">
|
|
<PrivateAssets>all</PrivateAssets>
|
|
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
|
|
</PackageReference>
|
|
<PackageReference Include="Meziantou.Analyzer">
|
|
<PrivateAssets>all</PrivateAssets>
|
|
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
|
|
</PackageReference>
|
|
<!-- StyleCop.Analyzers intentionally omitted: its latest stable (1.1.118) crashes
|
|
(AD0001) on C# records and its rules overlap the existing .editorconfig/Roslynator.
|
|
Revisit via the record-compatible 1.2.0-beta if StyleCop is specifically wanted. (#15) -->
|
|
<PackageReference Include="AsyncFixer">
|
|
<PrivateAssets>all</PrivateAssets>
|
|
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
|
|
</PackageReference>
|
|
</ItemGroup>
|
|
</Project>
|