누구든지 ReSharper ExternalAnnotations에 코드 계약 보증을 추가하는 방법을 알고 있습니까? 마지막 v7.1.3이나 최신 v8 EAP에는 없으며 주위에 떠 다니는 사용자 정의 xml에도 없습니다. Contract.Ensures(Contract.Result<T>() != null);
ReSharper ExternalAnnotations에 대한 코드 계약 보증
답변
단순히 분석 엔진을 달래기 위해 시도하는 경우는, 사용하는 가장 간단한 것은 메소드 선언 앞에 [NotNull]
입니다 : 방법이 하지 반환 널 않는 경우
구체적으로 감지합니다. 위에 링크를 게시 한 계약 주석은 입력 매개 변수와 반환 값 간의 관계를 정의하는보다 강력한 메커니즘입니다 (예 : [ContactAnnotation("null => null")]
).
Contract.Ensures
문에 대한 명시 적 분석은 [ContractAnnotation]
또는 다른 ReSharper 주석 특성을 통해이 문에 대해 자동 분석을 정의 할 수 없으므로 전혀 다른 제안입니다.
예, 나는 모든 것을 알고 있습니다. 예, 결국 가능하지 않습니다. 단순히 속성이 어떻게 든 포함하고있는 방법에 대해 암시되어야하기 때문에 코드 계약 그 자체가 아니라 코드 계약 그 자체에있는 것이 아닙니다 ... 어쨌든 고마워요 - 사람들을 혼란스럽게하지 않도록 응답 ('Requires' 대신'Ensures')을 수정하십시오. 그러면 받아 들일 것입니다. –
@ NikolaBogdanović 완료! –
설명하는 것은 외부 주석을 통해 설명 할 수있는 것이 아닙니다. R #에서이를 감지하도록하려면 이러한 구문을 탐지하는 데 특별히 사용되는 분석기를 사용하여 자체 플러그인을 작성해야합니다. –
@DmitriNesteruk : ReSharper v7은 특수 효과를 확장하는 자체 계약 (http://blogs.jetbrains.com/dotnet/2012/08/contract-annotations-in-resharper-7/)과 함께 제공되었습니다. 또한 대답을 추가하는 것보다 그것을 받아 들일 것입니다 ... –