我有一个拥有相当大(> 150 个解决方案)代码库的客户。他们有一个他们的开发人员可以使用的已批准第三方程序集的列表,并且他们希望使用 Sonar 来帮助识别正在使用未在批准列表中的程序集的项目。
一个简单的例子:
- 我的解决方案引用 foo.dll
- Foo.dll 不在已批准的第 3 方程序集列表中
- 当我运行声纳分析时,我的解决方案对 foo.dll 的使用被报告为违反规则
这似乎是一个相当简单的要求,但我在确定如何最好地在 Sonar 中实现它时遇到了一些困难。
使用NDepend工具是即时的(免责声明:我是 NDepend 的开发者之一)。您只需要编写代码规则:
//<Name>Forbidden third-party assemblies</Name>
warnif count > 0
from a in ThirdParty.Assemblies.WithNameNotIn(
"Foo1", "Foo2", "Foo3")
select a
瞧:
我没有使用声纳的经验,您还没有指定您的代码库是什么语言,但是一个非常简单和基本的解决方案可能是解析项目文件(通常是 XML)并验证包含的引用。