2013-06-23 59 views
3

有誰知道如何在ReSharper ExternalAnnotations中添加代碼合同確保?它不在最新的v7.1.3版本和最新的v8 EAP版本中,也沒有在任何自定義xml中浮動。 Contract.Ensures(Contract.Result<T>() != null);代碼合同確保ReSharper ExternalAnnotations

+0

您所描述的內容不是可以通過外部註釋來描述的內容。要讓R#檢測到這一點,您需要使用專門用於檢測此類語句的分析器編寫自己的插件。 –

+0

@DmitriNesteruk:ReSharper v7附帶延長註釋的自己的合同(http://blogs.jetbrains.com/dotnet/2012/08/contract-annotations-in-res- harper-7/) - 如果您的意見基於也就是說,除了添加一個答案,我會接受它... –

回答

4

如果你試圖安撫簡單的分析引擎,用最簡單的事情是在方法聲明的前[NotNull]

具體來說,如果方法不返回一個空應該檢測。您在上面發佈鏈接的合同註釋是定義輸入參數與返回值之間關係的更強大機制,例如[ContactAnnotation("null => null")]

但是,明確分析Contract.Ensures語句是一個完全不同的命題,因爲不能通過[ContractAnnotation]或任何其他ReSharper註釋屬性爲此語句定義自動分析。

+0

是的,我意識到所有這一切,並且是的,它畢竟是不可行的 - 就像屬性在某種程度上需要隱含的方法代碼合同,而不是代碼合同本身......哦,謝謝你 - 請更正你的答案('確保'而不是'需要'),以免混淆人們,我會接受它。 –

+0

@NikolaBogdanović完成! –