2013-03-15 5 views
-2

에 대한 유효성 검사를 생성하여 FxCop CA1062 수정 큰 프로젝트에서 코드 분석을 켜면 엄청난 양의 CA1062 만료가 표시됩니다. 이는 절대적으로 올바른 IMO입니다. 거기매개 변수

if (input == null) 
{ 
    throw new ArgumentNullException("input"); 
} 
+0

내가 아는 쉬운 방법이 아닙니다. 필 하크 (Phill Haack)는 다음과 같이 정확한 내용을 썼습니다. http://haacked.com/archive/2013/01/05/mitigate-the-billion-dollar-mistake-with-aspects.aspx 그의 솔루션은 AOP를 사용하여 메소드 서명을 다시 작성하는 것이 었습니다. 그 하나 하나에 바로 그 수표를 주사하십시오. Kludgy의 종류, IMO, 그러나 기대할 수있는 최선의 방법. – rossipedia

답변

1

예 :

나는 각 하나를 통해 갈 필요없이 자동으로 이러한 처리하고 싶습니다 같은 모든 메소드 매개 변수 나 somehting에 대한 어설 션을 사용하여 전체 코드에서이 작업을 자동화 할 수 어쨌든이 null 체크의 추가를 자동화하는 방법은 많습니다. Bryan Ross가 이미 언급 한 AOP 접근 방식 외에도 코드 분석 보고서 파일에서 발견 된 위반 사항을 기반으로 소스 코드를 수정하는 도구를 만들 수 있습니다. 이것은 좀 더 정교합니다 (즉, 실제로 속하지 않을 수도있는 곳에서 널 검증을 부과하지 않음). 그러나 도구를 작성하는 데 약간의 노력을 투자해야합니다.

즉, 많은 수의 누락 된 null 검사는 일반적으로 코드 기반에서 누락 된 다양한 매개 변수 유효성 검사가 있다는 것을 나타내는 좋은 예입니다. 이 모든 문제를 해결하려면 수동 작업이 필요하며 null 검사를 자동화하면 사용자가 집중해야하는 영역을 숨길 수 있습니다.

개인적으로 좀 더 일반적인 유효성 검사 (예 : 허용되지 않은 목록, 허용되지 않는 목록, 허용 된 목록의 열거 형)가 아닌 VS 스 니펫을 사용하여 수동 정리를 선택하는 경향이 있습니다. http://msmvps.com/blogs/calinoiu/archive/2007/04/22/fxcop-and-the-big-bad-backlog.aspx에 설명 된 "TODO"억제 방법은 정리 작업이 끝나기 (또는 시작되기도 전에) CA1062 규칙을 활성화하려는 경우 잠재적으로 유용합니다.

+0

고마워요, 당신의 블로그에 FXcop 게시물을 읽고 있습니다. 정말 그 interessting, 나는 주말 동안 그들 중 일부를 아프게 생각합니다. – CloudyMarble