문제

나는 누군가의 코드를 확인할 때 경고가없는 정책을 강요하고 싶습니다. 보이는 경고는 때로는 경고를 제거하기가 쉽지 않거나 너무 많은 사이클이나 메모리 등이 필요할 수 있으므로 명시 적으로 문서화되어야합니다.

그러나이 정책에는 다운 사이드가 있으며, 이는 잠재적으로 위험한 방식으로 경고를 제거하고 있습니다. 즉, 실제로 사용 된 방법은 문제를 해결하기보다는 문제를 숨 깁니다.

내가 가장 잘 알고있는 것은 버그를 숨길 수있는 명시 적으로 캐스트입니다.

C (++)에서 컴파일러 경고를 제거하는 다른 잠재적으로 위험한 방법은 무엇입니까?

도움이 되었습니까?

해결책

Const 정확성은 초보자에게 몇 가지 문제를 일으킬 수 있습니다.

// following should have been declared as f(const int & x)
void f( int & x ) {
  ...
}

나중에:

// n is only used to pass the parameter "4"
int n = 4;
// really wanted to say f(4)
f( n );

edit1 : 다소 유사한 맥락에서 모든 멤버 변수를 다음과 같이 표시합니다. 변하기 쉬운, Const 정확성이 실제로는 안된다고 말할 때 코드가 종종 변경되기 때문에 코드가 변경되기 때문입니다.

edit2 : 내가 겪은 또 다른 것은 (아마도 Java 프로그래머에서) 실제로 던질 수 있는지 여부에 관계없이 함수에 대한 tash () 사양을 해결하는 것입니다.

다른 팁

글쎄, 코드의 일부에 대한 특정 경고를 비활성화하는 명백한 방법이 있습니다.

#pragma warning( disable : 4507 34 )

편집 : 의견에서 지적 된 바와 같이, 경고가 괜찮다는 것을 알면 때때로 사용해야합니다 (유용한 기능이 아닌 경우 첫 번째에 넣을 이유가 없었을 것입니다. 장소). 그러나 코드에서 경고를 "무시"하고 여전히 조용히 컴파일하는 것은 매우 쉬운 방법입니다. 이것이 원래의 질문에 관한 것입니다.

나는 그것이 섬세한 문제라고 생각합니다. 내 견해는 코드가 올바른지 / 의도 된 것을 수행하는지 확인하기 위해 경고를 철저히 점검해야한다는 것입니다. 그러나 종종 경고를 일으키는 올바른 코드가 있으며,이를 제거하려고 시도하면 코드를 복잡하게하거나 덜 자연스럽게 재 작성합니다.

나는 이전 릴리스에서 몇 가지 경고를 한 정확하고 견고한 코드를 가지고 있었고 동료들은 이것에 대해 불평하기 시작했습니다. 코드는 훨씬 깨끗하고 의도 한 일을했습니다. 결국 코드는 경고로 제작되었습니다.

또한 다른 컴파일러 버전은 다른 경고를 생성하므로 결과가 컴파일러 개발자의 분위기에 의존 할 때 "경고 없음"정책을 시행하는 것이 더욱 무의미 해집니다.

나는 모든 경고를 적어도 한 번은 확인하는 것이 얼마나 중요한지를 강조하고 싶습니다.

BTW I는 임베디드 시스템의 경우 C 및 C ++로 개발됩니다.

경고를 생성하는 코드를 주석 (또는 더 나쁘게 삭제). 물론, 경고는 사라지지만, 당신은 의도 한 바를 수행하지 않는 코드로 끝나는 것 이상입니다.

나는 또한 무자비한 규칙을 시행하지만, 당신은 신중한 고려없이 경고를 제거 할 수 없다는 것이 옳습니다. 솔직히 말해서, 코드가 옳았 기 때문에 때때로 경고를 한동안 남겼습니다. 결국 나는 당신이 건물에 12 개 이상의 경고를 받으면 사람들은 그들에게주의를 기울이지 않기 때문에 어떻게 든 그것을 청소합니다.

당신이 묘사 한 것은 경고에 고유 한 문제가 아닙니다. 나는 "몇 번의 null 수표를 추가하기 위해 Crash에 대한 Bug-fix를 몇 번이나 볼 수 있는지 말할 수 없습니다. 근본 원인으로 가야합니다. 그 변수가 무효가되어야합니까? 그렇지 않다면 왜 그랬습니까?

이것이 코드 리뷰가있는 이유입니다.

가장 큰 위험은 누군가가 코드에 영향을 미치지 않는 사소한 경고를 풀기 위해 몇 시간의 개발 시간을 소비한다는 것입니다. 그것은 시간 낭비 일 것입니다. 때로는 경고를 유지하고 경고가 발생하는 이유를 설명하는 댓글 줄을 추가하는 것이 더 쉽습니다. (누군가가 이러한 사소한 경고를 해결할 시간이있을 때까지.)

내 경험상, 사소한 경고를 해결하면 종종 개발자를 위해 2 일 더 작업이 추가됩니다. 마감일 전후의 마감 사이에 차이가 생길 수 있습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top