Powershell Script to add Code Analysis and Style Cop to all your .NET Core Projects.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# Place the script in the solution folder | |
# Add the ca.ruleset to the solution folder | |
# Run the Powershell Script to add Code Analysis and StyleCop to all your .NET Core Projects. | |
$projects = (Get-ChildItem . -recurse) | Where-Object {$_.extension -eq ".csproj"} | |
foreach ($project in $projects) { | |
$content = Get-Content $project.FullName | |
if (!($content | Select-String -pattern "<CodeAnalysisRuleSet>ca.ruleset</CodeAnalysisRuleSet>")) { | |
$content = $content.Replace("</Project>", "`t<PropertyGroup>`r`n`t`t<CodeAnalysisRuleSet>ca.ruleset</CodeAnalysisRuleSet>`r`n`t</PropertyGroup>`r`n</Project>") | |
$content | Out-File $project.FullName -Encoding Default | |
} | |
dotnet add $project.FullName package Microsoft.CodeAnalysis.FxCopAnalyzers | |
dotnet add $project.FullName package StyleCop.Analyzers | |
Copy-Item ".\ca.ruleset" -Destination "$($project.Directory.FullName)\ca.ruleset" | |
} | |
dotnet restore |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?xml version="1.0" encoding="utf-8"?> | |
<RuleSet Name="Custom Rulset" Description="Custom Rulset" ToolsVersion="14.0"> | |
<Rules AnalyzerId="AsyncUsageAnalyzers" RuleNamespace="AsyncUsageAnalyzers"> | |
<Rule Id="UseConfigureAwait" Action="Warning" /> | |
</Rules> | |
<Rules AnalyzerId="Microsoft.Analyzers.ManagedCodeAnalysis" RuleNamespace="Microsoft.Rules.Managed"> | |
<Rule Id="CA1001" Action="Warning" /> | |
<Rule Id="CA1009" Action="Warning" /> | |
<Rule Id="CA1016" Action="Warning" /> | |
<Rule Id="CA1033" Action="Warning" /> | |
<Rule Id="CA1049" Action="Warning" /> | |
<Rule Id="CA1060" Action="Warning" /> | |
<Rule Id="CA1061" Action="Warning" /> | |
<Rule Id="CA1063" Action="Warning" /> | |
<Rule Id="CA1065" Action="Warning" /> | |
<Rule Id="CA1301" Action="Warning" /> | |
<Rule Id="CA1400" Action="Warning" /> | |
<Rule Id="CA1401" Action="Warning" /> | |
<Rule Id="CA1403" Action="Warning" /> | |
<Rule Id="CA1404" Action="Warning" /> | |
<Rule Id="CA1405" Action="Warning" /> | |
<Rule Id="CA1410" Action="Warning" /> | |
<Rule Id="CA1415" Action="Warning" /> | |
<Rule Id="CA1821" Action="Warning" /> | |
<Rule Id="CA1900" Action="Warning" /> | |
<Rule Id="CA1901" Action="Warning" /> | |
<Rule Id="CA2002" Action="Warning" /> | |
<Rule Id="CA2100" Action="Warning" /> | |
<Rule Id="CA2101" Action="Warning" /> | |
<Rule Id="CA2108" Action="Warning" /> | |
<Rule Id="CA2111" Action="Warning" /> | |
<Rule Id="CA2112" Action="Warning" /> | |
<Rule Id="CA2114" Action="Warning" /> | |
<Rule Id="CA2116" Action="Warning" /> | |
<Rule Id="CA2117" Action="Warning" /> | |
<Rule Id="CA2122" Action="Warning" /> | |
<Rule Id="CA2123" Action="Warning" /> | |
<Rule Id="CA2124" Action="Warning" /> | |
<Rule Id="CA2126" Action="Warning" /> | |
<Rule Id="CA2131" Action="Warning" /> | |
<Rule Id="CA2132" Action="Warning" /> | |
<Rule Id="CA2133" Action="Warning" /> | |
<Rule Id="CA2134" Action="Warning" /> | |
<Rule Id="CA2137" Action="Warning" /> | |
<Rule Id="CA2138" Action="Warning" /> | |
<Rule Id="CA2140" Action="Warning" /> | |
<Rule Id="CA2141" Action="Warning" /> | |
<Rule Id="CA2146" Action="Warning" /> | |
<Rule Id="CA2147" Action="Warning" /> | |
<Rule Id="CA2149" Action="Warning" /> | |
<Rule Id="CA2200" Action="Warning" /> | |
<Rule Id="CA2202" Action="Warning" /> | |
<Rule Id="CA2207" Action="Warning" /> | |
<Rule Id="CA2212" Action="Warning" /> | |
<Rule Id="CA2213" Action="Warning" /> | |
<Rule Id="CA2214" Action="Warning" /> | |
<Rule Id="CA2216" Action="Warning" /> | |
<Rule Id="CA2220" Action="Warning" /> | |
<Rule Id="CA2229" Action="Warning" /> | |
<Rule Id="CA2231" Action="Warning" /> | |
<Rule Id="CA2232" Action="Warning" /> | |
<Rule Id="CA2235" Action="Warning" /> | |
<Rule Id="CA2236" Action="Warning" /> | |
<Rule Id="CA2237" Action="Warning" /> | |
<Rule Id="CA2238" Action="Warning" /> | |
<Rule Id="CA2240" Action="Warning" /> | |
<Rule Id="CA2241" Action="Warning" /> | |
<Rule Id="CA2242" Action="Warning" /> | |
<Rule Id="CA1012" Action="Warning" /> | |
</Rules> | |
<Rules AnalyzerId="StyleCop.Analyzers" RuleNamespace="StyleCop.Analyzers"> | |
<Rule Id="SA1305" Action="Warning" /> | |
<Rule Id="SA1412" Action="Warning" /> | |
<Rule Id="SA1600" Action="None" /> | |
<Rule Id="SA1609" Action="Warning" /> | |
</Rules> | |
</RuleSet> |
I got a build warning that cannot find ca.ruleset file. I think you need to also mention the file type. i.e. ca.ruleset.xml
You are right @GustavoAmerico I'll alos have to take a look to https://github.com/cmendible/dotnet-addcasa where I think I made the same thing...
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
You do not need to replicate the files.
you can remove line 13 and replace "ca.ruleset" by "$(SolutionDir)\ca.ruleset".