我有一個擁有相當大(> 150個解決方案)代碼庫的客戶端。他們擁有開發人員可以使用的已批准第三方程序集列表,他們希望使用Sonar來幫助識別使用不在批准列表中的程序集的項目。使用Sonar監控第三方裝配使用情況
一個簡單的例子:
- 我的解決方案引用foo.dll
- Foo.dll不認可的第三方組件
- 我的解決方案的使用foo.dll的報告爲名單上當我運行聲納分析時違反規則
這似乎是一個相當簡單的要求,但我在確定如何最好地在Sonar中實施它時遇到了一些困難。
我有一個擁有相當大(> 150個解決方案)代碼庫的客戶端。他們擁有開發人員可以使用的已批准第三方程序集列表,他們希望使用Sonar來幫助識別使用不在批准列表中的程序集的項目。使用Sonar監控第三方裝配使用情況
一個簡單的例子:
這似乎是一個相當簡單的要求,但我在確定如何最好地在Sonar中實施它時遇到了一些困難。
我沒有使用聲納的經驗,你沒有指定你的代碼庫是什麼語言,但一個非常簡單和基本的解決方案可能是解析項目文件(通常是XML)並驗證包含的引用。
使用工具NDepend它是即時的(免責聲明:我是NDepend的開發人員之一)。你只需要編寫的代碼規則:
//<Name>Forbidden third-party assemblies</Name>
warnif count > 0
from a in ThirdParty.Assemblies.WithNameNotIn(
"Foo1", "Foo2", "Foo3")
select a
等瞧:
不錯!可惜它花費如此之多: – Mightymuke
我是NDepend的忠實擁躉 - 我有一個我一直使用的個人許可證,不幸的是,這不是這個客戶的選擇。 – kiprainey
感謝您的評論的代碼庫是在C#中,所以可能的工具將聲納自己的基於XPath的工具,fxcop和憲兵。 – kiprainey
FxCop和憲兵基本上做同樣的事情,但有一些不同的規則。我不相信有一條規則可以支持你所需要的規則,但是它們都提供了運行你自己的自定義規則的功能。然而,如果聲吶支持某種基於xpath的分析,那麼這是我親自採取的嘗試儘可能簡化過程的方向。 – Mightymuke