2017-02-24 33 views
4

所以,我曾經有過Debug.Assert各地我的代碼,但現在我已經創建了一個DebugHelper.Assert這本身就具有一定的採伐和Debug.Assert,但現在我得到百萬警告的東西可能是空的。如何告訴ReSharper我正在使用Debug.Assert的包裝來避免null ref警告?

我可以告訴ReSharper:DebugHelper.AssertDebug.Assert相同,從而擺脫了警告?

編輯: 我真的想(也可能到)避免增加其他依賴於項目只是爲了這個。

+0

http://stackoverflow.com/questions/8854701/disable-all-resharper-warnings-with-a-comment –

+2

@NikhilAgrawal簡單地禁止所有的警告,沒有什麼東西被要求在這裏 – Rob

+0

@Rob:我知道,但在這些方面想些什麼。我沒有給OP提供預先答覆的答案,而是讓他思考這些問題,並告知Resharper確實存在這種「功能」。我有鏈接到他想找到的確切答案。但爲什麼給一個男人一條魚.... –

回答

3

您想要爲DebugHelper.Assert方法添加屬性。你可以在你的項目中引用JetBrains.Annotations包,並添加一個合同斷言,這樣的:

[ContractAnnotation("condition:false => halt")] 
public void Assert(bool condition) 
{ 
    // ... 
} 

這就告訴ReSharper的,如果condition參數爲假,則該方法將停止。這就是ReSharper如何註釋標準Debug.Assert方法(儘管通過xml文件中的「外部」註釋而不是代碼中的內聯)。

您還可以標記JetBrains.Annotations包作爲一個發展時間依賴性 - 屬性是有條件的,而不是編譯成默認生成的二進制文件。更多詳情,請參閱this blog post

+1

這是一個很好的解決方案,但是我沒有在創建依賴Jetbrains的庫(甚至是一個開發依賴項)上出售。你知道是否可以用resharper配置文件做同樣的事情 - 我想,類似於他們如何標註'Debug.Assert'? – Rob

+0

+1 to @Rob。我真的不喜歡這種添加依賴關係的想法,而且我不確定我是否會被允許將它作爲開發依賴項,因爲我的公司政策可能需要額外的批准。我真的想避免添加這 – ditoslav

+0

這可以以某種方式使用https://www.jetbrains.com/help/resharper/2016.3/Code_Analysis__External_Annotations.html? 編輯:看起來像不是。看來這些不能應用回同一個項目 – ditoslav