我似乎找不到一个很好的教程来添加一些在StyleCop x1c 0d1x中还不能自定义的自定义样式规则
例如,创建一个规则来检查循环或控制流语句中的N级嵌套块,例如具有3级深度的嵌套代码:
。
我发现了一个使用VS 2008 https://subscription.packtpub.com/book/programming/9781782169543/1/ch01lvl1sec16/creating+custom+rules+(intermediate)的旧教程,但我相信现在不可能以类似的方式做到这一点,而且我在文档https://github.com/DotNetAnalyzers/StyleCopAnalyzers中找不到任何相关内容。我在.NET Core 6 C#项目中使用Visual Studio 2022和上面提到的包。如果你能分享一些关于这方面的见解,我将不胜感激。谢谢,提前!
我试过参考这些教程,但我相信它们不适用于当前的VS 2022安装与.Net 6
https://subscription.packtpub.com/book/programming/9781782169543/1/ch01lvl1sec16/creating+custom+rules+(intermediate)
https://www.planetgeek.ch/2009/07/19/custom-stylecop-rules-2/
1条答案
按热度按时间eqqqjvef1#
我似乎找不到一个很好的教程来添加一些在StyleCop中还不能自定义的自定义样式规则
这是因为
StyleCop.Analyzers
包是不可扩展的(即 * 你不能 *):https://github.com/DotNetAnalyzers/StyleCopAnalyzers/issues/2265
但不要气馁:你很难找到相关信息,因为你正在专门搜索 “StyleCop”,但StyleCop(如,the original name for the original tooling from 2005-2012)来自 * 之前 * Roslyn被引入,今天完全过时了。相反,搜索“roslyn”而不是“stylecop”,你会得到相关的结果。
所以你实际上想做的是写一个**Roslyn* 语法分析器 *,它检查
.cs
文件的语法树结构,which is documented here-和here is a quickstart/sample/template project for creating a custom syntax analyzer(permalink)。这是今天仍然适用的a random guide I found。StyleCop.Analyzers
包中的任何规则,否则应该删除该包引用。Microsoft.CodeAnalysis.CSharp.Workspaces
(这反过来将传递引用您需要的其他Microsoft.CodeAnalysis.*
包)。SyntaxTree tree = CSharpSyntaxTree.ParseText( await File.ReadAllTextAsync( "FizzBuzz.cs" ) ); CompilationUnitSyntax root = tree.GetCompilationUnitRoot();
加载您的.cs
文件root.DescendantNodes
是否有您感兴趣的Syntax
子类型、such asif
statements或特定的关键字和标记。[DiagnosticAnalyzerAttribute]
将警告报告回编译器.editorconfig
配置分析器。如果我发现了,我会编辑这个答案。