是否可以抑制特定的憲兵缺陷信息? 我想用一個標誌或類似的東西在源代碼中做到這一點。如何抑制憲兵隊的缺陷?
回答
如果您使用控制檯運行程序,則可以使用缺陷文件(out-of-source)來抑制方法,類型或程序集中的任何缺陷。
新的Gendarme 2.8對[SuppressMessage]屬性(與fxcop相同)具有基本的(讀取不完整和錯誤)支持。一旦2.10發佈,預計此功能將正常工作。
據我所知,無法在Gendarme(2.8)處啓用 [SuppressMessage] 。我抓住了GitHub的最新消息來源,因爲它沒有像描述的那樣工作。
SupressMessageEngine在代碼中存在,並且有測試通過Runner.Engines.Subscribe的手動覆蓋來執行。但[EngineDependency(typeof(SuppressMessageEngine))]不適用於所有編譯規則,這是Gendarme實際運行時訂閱的方式。
我也看過源代碼找到一種方法來始終通過配置訂閱特定的引擎 - 但沒有。
我可能是錯的,但它看起來像一個疏忽,他們忘記回去並應用適當的EngineDependency屬性。
我能想到的唯一「解決方法」是編寫一個自定義規則,在調用時添加一個訂閱SuppressMessageEngine並且不執行任何操作。哈克是的,但這應該基於我在他們的代碼中看到的工作。
僅供參考 - 剛剛實施。您需要創建自己的自定義規則,進口Mono.Cecil能和Gendarme.Framework和目標.NET Framework 3.5的
using Gendarme.Framework;
using Gendarme.Framework.Engines;
namespace MyRules
{
[Problem("Gendarme devs forgot to attribute rules with SuppressMessageEngine")]
[Solution("Include this rule")]
[EngineDependency(typeof(SuppressMessageEngine))]
public class AddSuppressMessageSupportRule : Rule {}
}
可悲的是,這會不會拉在FxCopCompatibility屬性是是有(即SupressMessage對於符合憲兵規則的FxCop規則也會壓制憲兵規則),但至少它可以讓你使用憲兵隊的名字來壓制。
正如poupou已經指出的那樣,版本2.10支持[SuppressMessage]屬性。
例如,爲了抑制AvoidNonAlphanumericIdentifierRule規則,這樣做:
[SuppressMessage("Gendarme.Rules.Naming", "AvoidNonAlphanumericIdentifierRule")]
protected void Application_Start()
{
...
}
請注意,您需要指定規則的生活......在這種情況下,AvoidNonAlphanumericIdentifierRule住在憲兵組件的名稱。 Rules.Naming.dll。規則及其組合名稱的完整列表是here。
- 1. 如何在項目或裝配層面抑制特定的憲兵隊規則
- 2. 憲兵規則定製
- 3. Protobuf網憲兵錯誤
- 4. 憲兵不安全的代碼檢測
- 5. 憲兵忽略列表格式
- 6. ArgumentNullException,索引和憲兵規則錯誤
- 7. 如何從Visual Studio團隊服務中提取缺陷報告?
- 8. TFS中的缺陷和缺陷工作項有何區別?
- 9. PipedInputStream/PipedOutputStream的缺陷
- 10. Android DP缺陷?
- 11. 缺陷循環!
- 12. 儀器缺陷
- 13. SlideToggle缺陷
- 14. 如何抑制ResponseHeader
- 15. 如何抑制VB的
- 16. 與複製缺陷全部在android
- 17. 缺陷率跟蹤最適合什麼?每個KLOC的缺陷?
- 18. 安全缺陷:如何避免它們?
- 19. 缺陷與CR - 如何區分
- 20. 如何裁剪凸面缺陷?
- 21. NuGet:如何向Microsoft報告缺陷?
- 22. 如何衡量缺陷密度?
- 23. 如何解決這個設計缺陷?
- 24. OpenID和其缺陷
- 25. OpenCv凸性缺陷
- 26. NS_OPTIONS有缺陷嗎?
- 27. 視覺缺陷DIV
- 28. 如何抑制在Rails的控制檯
- 29. Three.js中的紋理缺陷
- 30. jQuery的動畫缺陷
應該注意的是,程序集必須使用定義的'CODE_ANALYSIS'符號進行編譯[爲此工作](http://www.mono-project.com/Gendarme.FAQ#Why_are_defects_decorated_using_.5BSuppressMessage.5D_attributes_still_showing_in_my_reports_.3F )。 – 2012-09-26 00:37:08
同樣,最新版本增加了FxCop兼容性,所以如果你已經有一個來自FxCop的SuppressMessage並且在Gendarme中有一個等同的規則,那麼這個消息將被抑制。 – 2014-04-08 13:07:12