2014-01-09 1 views
1

다음과 같은 코드 블록을 사용하여 강화 된 null 포인터 (경고는 강조 표시된 코드 섹션에서 발생 함)에 대해 경고합니다.참조 역 참조 null 포인터

enter image description here

이 거짓 긍정적인가? 경고가 발생하는 곳이 null인지 여부를 확인합니다.

업데이트 : 코드를 조금 더 추가했습니다. displayAttribute가 null이 아닌지 확인하기 전에 손을 검사하고 있습니다. 그것은 IsNotNull()이 확장 메서드이기 때문에 가능합니까?

enter image description here

답변

4

경고는 displayAttribute 자체가 null하지 Name이 될 수 있다는 것이다. 그런 경우 Name 속성에 액세스하면 NullReferenceException이 발생합니다. displayAttribute 명시 적으로 바로 경고 아래 null을 위해 선택되어 있는지 감안할 때이 경고가 유효한 것으로 보인다

편집은 속성이 null이 아니라는 것을 확인하기 위해 확장 방법을 사용하는 것 같습니다

. 이런 식으로 확장 메서드를 사용하는 것은 다소 직관적 인 것처럼 보입니다. 분석 엔진은 이것이 당신이 여기서하는 일이라는 것을 추론 할 수 없기 때문에 나와 일치하는 것으로 보입니다.

그렇다면 경고를 무시할 수 있지만 그 이유는 무엇입니까? 보통 displayAttribute != null 체크 만하면 개발자와 분석 엔진이 코드가 실제로하는 일을보다 쉽게 ​​추론 할 수 있습니다.

+0

스크린 샷을 업데이트했습니다. displayAttribute가 null이 아닌지 확인합니다. 미안해. 그 전에는 포함시키지 않았다. –

+0

확장 방법에 대해 전적으로 동의합니다. 실제로 보안 문제를 수정하면서 구축하지 않았습니다. 그것은 나에게도 그렇게 할 수 없다. 의견을 보내 주셔서 감사합니다. –