
上QQ阅读APP看书,第一时间看更新
How to do it...
- Open a C# project, say ClassLibrary, with the analyzer NuGet package System.Runtime.Analyzers.nupkg prerelease version 1.2.0-beta2 installed in it.
- Add the following source code to the project and verify that no CA1813: Avoid unsealed attributes is fired:
using System;
namespace ClassLibrary
{
[AttributeUsage(AttributeTargets.All)]
public class MyAttribute: Attribute
{
}
}
- In the solution explorer, navigate to ClassLibary | References | Analyzers, right-click on the Analyzers node and execute the context menu command Open Active Rule Set:

- In the Rule Set editor, search CA1813 in the textbox in the top-right corner.
- For the CA1813, search the result listed under System.Runtime.Analyzers, change the Action from None to Warning, and hit save:

- We should now see a CA1813 warning being reported on our attribute definition in the source code.
- In the solution explorer, verify that the project now contains that a new ClassLibrary.ruleset item, and a new CodeAnalysisRuleset property was added to the project file:
<CodeAnalysisRuleSet>ClassLibrary.ruleset</CodeAnalysisRuleSet>
- Open ClassLibrary.ruleset in a text editor outside of Visual Studio and verify that it has the following rule action specification for CA1813:
<Rules AnalyzerId="System.Runtime.Analyzers" RuleNamespace="System.Runtime.Analyzers">
<Rule Id="CA1813" Action="Warning" />
</Rules>
- Edit the ruleset file to change the ruleset Action for CA1813 from Warning to Error and save the file.
- Switch back to Visual Studio and confirm that the source code editor now shows a red squiggle and that the error list also reports an error for CA1813:

- Double-click on ClassLibrary.ruleset in the solution explorer to open it with the Rule Set editor and verify that the rule severity entry for CA1813 is now showing as Error.
- Build the project and verify that the error CA1813 is reported, confirming that the ruleset setting is preserved for command-line builds as well.