.NET 4.0 용 ReSharper 8.0 및 VS2012를 사용하여 C#으로 작성했습니다.Resharper와 코드 계약 둘 다 사용할 수있는 공통 PureAttribute가 있습니까?
ReSharper는 JetBrains.Annotations.PureAttribute 속성을 포함합니다. 이것은 "Pure 메서드의 반환 값이 사용되지 않음"이라는 검사를 제공하는 데 사용됩니다.
코드 계약에는 System.Diagnostics.Contracts.PureAttribute 속성이 포함되어 있습니다. 이것은 코드 계약 검사에서 호출에 가시적 인 상태 변경이 발생하지 않도록하기 위해 사용되므로 오브젝트의 상태를 다시 확인하지 않아도됩니다.
현재이 두 도구의 기능을 모두 사용하려면 메서드에서 각각의 특성으로 주석을 추가해야합니다. 더 나쁜 것은 둘 다 동일한 유형 이름을 공유하기 때문에 각 속성을 한정해야합니다.
[Pure]
[Jetbrains.Annotations.Pure]
public bool isFinished() {
...
는 세 가지 방법이 있어야한다,이 상황을 방지하려면 :
는- 모두 ReSharper에서 인식 할 수있는 자리를 작성하고
- 이 계약은
- 가 계약을받을 속성을 인식 할 수 ReSharper에서 얻을 계약합니다 ReSharper 특성을 인식하십시오.
이 중 하나가 가능합니까?
'System.Diagnostics.Contracts.PureAttribute'는'[Conditional ("CONTRACTS_FULL")]'로 정의됩니다. 즉, 전체 런타임 계약 검사를 통해 빌드하지 않는 한 ReSharper에 표시되지 않습니다. 이는 항상 바람직한 것은 아닙니다. – Varon
아, 잘 찾아 냈습니다. 이것은 ReSharper가 컴파일시에'CONTRACTS_FULL'이 정의되어 있지 않으면 컴파일 된 메소드에서'PureAttribute'를 볼 수 없다는 것을 의미합니다. 그러나 ReSharper는 여전히 소스 코드에서이를 볼 수 있습니다. ReSharper는 조건부 설정이 아닌 속성의 이름 만 봅니다. – citizenmatt
R # 9.2가'System.Diagnostics.Contracts.PureAttribute'를 해석하는 방법을 잊어 버린 것 같습니다 :) – porges