用于C#的SonarQube体系结构规则引擎
本文关键字:规则 引擎 体系结构 SonarQube 用于 | 更新日期: 2023-09-27 18:24:44
SonarQube有一个仅限Java的体系结构规则引擎。我正在为C#.net项目寻找一种实现类似参考体系结构规则的方法。
例如:
- 禁止从
*.B.*
类访问*.A.*
- 强制至少从
*.C.*
类访问一次*.A.*
实现这一点的最佳方式是什么?是否可以在FXCop中创建这些规则?
从长远来看,我们肯定希望用C#SonarQube插件提供这样一个开箱即用的规则。
然而,与此同时,您确实可以开发自己的自定义FxCop规则(由现有的C#SonarQube插件支持),或者开发一个新的SonarQobe插件,根据建议从不支持的工具(如Nitriq)导入问题。
如果您需要任何帮助,请随时查看R#插件并向SonarQube开发邮件列表发送请求:https://github.com/SonarCommunity/sonar-resharper
您可以使用Nitriq:创建规则
禁止从.B类访问.A
var results =
from t in Types
where t.Name.Equals("A") && t.TypesUsing.Any("B")
select new { t.TypeId, t.Name, t.FullName };
Warn(results, 0);
从.C类强制至少一次访问.A
var results =
from t in Types
where t.Name.Equals("A") && !t.TypesUsing.Any("C")
select new { t.TypeId, t.Name, t.FullName };
Warn(results, 0);
另一种方法是使用Roslyn