컴파일러 경고 가장 좋은 방법은 무엇입니까? 다른 사람의 코드를

많은 컴파일러는 잠재적 인 런타임, 로직 및 성능 오류에 대해 프로그래머에게 경고하기위한 경고 메시지를 가지고 있습니다.

수정 불가능한 경고를 어떻게 처리합니까? 코드의 일부를 다시 쓰거나 “길고 해킹없는 방식”으로 다시 쓰거나 경고를 모두 비활성화합니까? 가장 좋은 방법은 무엇입니까?

다른 사람의 코드를 편집하고 있고 그의 코드에 경고가있는 경우 어떻게해야합니까?

다음은 좋은 예입니다. jQuery에는 Mozilla 클래스 브라우저가 감지 한 것처럼 많은 JavaScript 경고가 있습니다. 왜 jQ 개발자가이를 수정하지 않습니까? jQuery에 기여한다면, 그것들을 고치겠습니까?



답변

일부 경고는 일반적으로 무시해도 안전 하지만 시간이 지남에 따라 시간이 지남에 따라 소음에 숨겨져있어 실제로 중요한 경고를 놓치게 될 날이 너무 많아 질 때까지 그 수가 곱해질 것입니다.

경고를 즉시 수정하십시오 ( 상황과 관련 이 없다고 생각되면 개별 규칙을 사용하지 못할 수도 있음 ).


답변

내 의견은 당신이 자신에 대해 엄격해야한다는 것입니다. 이 컴파일러는 언어 전문가들에 의해 작성되었습니다. 그들이 뭔가 이상한 것을보고하는 경우 (코드 냄새를 생각) 코드를 검토해야합니다.

오류없이 경고없이 컴파일되는 코드를 작성하는 것은 전적으로 가능합니다.


답변

C 및 C ++로 작성할 때 컴파일러에 어떤 의미가 없는지 알고 싶었 기 때문에 가능한 가장 엄격한 설정을 사용했습니다. 반환 값을 캐스팅하고 확인하면 코드가 정확하기 때문에 기쁠 것입니다.

때때로 경고를 흘리는 다른 사람으로부터 코드를 얻었습니다. 소스를 확인한 결과 C에서 좋은 프로그래밍 관행 인 것을 무시하고 코드를 깨지기 쉬운 것으로 나타났습니다.

따라서 엄격함을 활성화하고 문제를 해결하는 데 시간이 걸리는 좋은 이유가 있다고 생각합니다. 그렇지 않으면 조잡합니다. 내가 경고를 끄는 동료가 있다면 나는 그들과 시간을 보내고 관리자가 왜 그렇게 나쁜지를 설명 할 것입니다.


답변

경고를 고칠 것입니다. 당신이 그들을 무시하고 축적하자면, 당신은 실제로 중요한 것을 놓칠 수 있습니다.


답변

일반적으로 새로운 경고가 더 많이 표시되도록 컴파일러를 자동으로 만드는 데 노력해야합니다. 이러한 경고는 미묘한 버그를 나타낼 수 있으므로 적절히 처리해야합니다.

다른 사람들의 코드를 수정하는 것과 관련하여 직장 문화와 코드의 현재 상태에 크게 의존합니다. 테스트 단계 또는 프로덕션 단계의 코드와 마찬가지로 전체 테스트주기를 트리거하는 코드 만 변경할 수는 없습니다.

상사에게 물어보고 그에 따라 행동하십시오.


답변

컴파일러 경고가 표시 될 때마다 고객 사이트에서 실제로 대기하는 것이 문제인지 아니면 무시할 수있는 문제인지 생각해야합니다. 더군다나, 오늘 무시할 수있는 것은 외관상 관련이없는 코드 변경이 발생한 후 몇 년 안에 고객의 사이트에서 폭발 할 수 있습니다.

경고를 수정하십시오. 기간. 그것이 위험하지 않다는 것을 증명하는 데 필요한만큼의 설명 페이지와 함께 좋아하는 여자 친구 (또는 포르노 보관소)에 판매 주문서가 첨부 된 것으로 판명되거나 위험이 있었다.


답변

일반적으로 빌드에는 경고가 없어야합니다. 경고는 이유가 있으며 종종 실제 문제를 지적합니다. 컴파일러 경고를 무시하는 습관을들이는 경우 결국에는 빌드에 많은 경고가 발생하며 회사에 막대한 비용이 소요되는 치명적인 문제로 인해 발생하는 경고를 놓치게됩니다. 반면에 프로그램이 일반적으로 경고없이 컴파일되면 모든 새 경고가 즉시 확인되고 신속하게 해결할 수 있습니다.

그러나 컴파일러는 때때로 의미가없고 쉽게 고칠 수없는 경고를받을 수 있습니다. TI DSP를위한 개발 환경 인 TI CodeComposer와 함께 일하면서 매일 이러한 상황에 직면하고 있습니다. Visual Studio에서 경고없이 컴파일되는 C ++ 코드가 있지만 표준 C ++에 대한 TI의 지원이 더 좋기 때문에 CodeComposer에서 이상한 경고가 발생합니다. 운 좋게도 CodeComposer를 사용하면 특정 경고를 개별적으로 비활성화 할 수 있습니다. 이는 경고를 생성하는 코드를 수정할 방법이 없을 때해야 할 일입니다.