2017-05-16 3 views
1

사용자 지정 도우미를 사용하여 인수 유효성 검사를 단순화하려면 다음과 같이하십시오.사용자 지정 인수 유효성 검사 도우미를 사용하면 코드 분석이 중단됩니다.

public static void ThrowIfNull(this object value, string parameterName) 
{ 
    if (value == null) 
    { 
     throw new ArgumentNullException(parameterName); 
    } 
} 

그러나 물론 정적 코드 분석 내가이 도우미를 사용하는 경우 공공 방법에서 입력의 유효성을 검사 할 것을 알고하지 않기 때문에 그것은 나에게 검증되지 않은 공용 메서드 인수에 대한 CA1062 오류를 제공합니다.

특히 문제는 this one입니다.

이 도우미가 인수 null 유효성 검사를 처리하는 코드 분석기를 가르치는 방법이 있습니까? 이 문제에 대한 적절한 해결책은 무엇입니까?

[AttributeUsage(AttributeTargets.Parameter, AllowMultiple = false, Inherited = false)] 
public sealed class ValidatedNotNullAttribute : Attribute {} 

그런 다음 유효성을 검사 인수에 적용 :

public static void ThrowIfNull([ValidatedNotNull] this object value, string parameterName) 
{ 
    if (value == null) 
    { 
     throw new ArgumentNullException(parameterName); 
    } 
} 

을 그리고 경고 멀리 가야

+3

@DipenShah 아주 쉽게. 시도해보십시오 :'try { string s = null; s.ThrowIfNull ("s"); } catch (예외 ex) {/ * 여기에 중단 점을 설정하십시오 */ } –

+0

어떤 종류의 코드 분석가입니까? 많이있다. – Evk

+1

@Ed Plunkett 흥미롭고, 좋은 점도 알고 있습니다! –

답변

1

는 다음과 같은 이름을 가진 속성을 만듭니다.

이 속성은 .net 프레임 워크 자체를 포함하여 많은 라이브러리에서 사용됩니다 (예 : here).

+0

감사합니다. 다음과 같은 기술이 필요합니다. 예를 들어 ReSharper는 비슷한 종류의 주석을 사용하여 이러한 도우미 작업을 수행합니다. 나는 내일 이것을 시도하고 당신의 대답을 받아 들일 것입니다. –

+0

예, 작동하지만 불쌍한 곳에서는 문서화되지 않았거나 적어도 Resharper 속성과 달리 발견되지 않았습니다. – Evk

관련 문제