그러나 사용되지 않는이 헤더를 포함 정리하는 데 도움이 하나있다 : include-what-you-use
"는을 사용하는 것을 포함 "은 foo.cc에서 사용하는 모든 심볼 (유형, 함수 변수 또는 매크로)에 대해 foo.cc 또는 foo.h 중 하나는 해당 심볼의 선언을 내포하는 .h 파일을 # 포함해야합니다. include-what-you-use 도구는 clang 라이브러리로 빌드하여 소스 파일의 #include를 분석하여 include-what-you-use 위반 사항을 찾고 수정 사항을 제안 할 수있는 프로그램입니다.
include-what-you-use의 주요 목표는 불필요한 #include를 제거하는 것입니다. 가능하면 #includes가 .cc 및 .h 파일 모두에 대해이 파일에 실제로 필요하지 않은 것을 알아 내고 을 #includes로 대체하여이 작업을 수행합니다.
하나는 Clang static analyzer이 작업을 수행 할 것이라고 예상 할 수 있지만, 내가 the availalbe checks을 볼 것과 같은 것을 제공하지 않습니다.
이것은 분석기에 suggest a feature request에 누군가를위한 좋은 시간 또는 Clang Tools
한편
에 설명 된 도구와 유사한 파에 LibTooling를 사용하여 별도의 도구를 만들 수 있습니다, 당신이 수 있도록 건의 할 것 - (다른 사람의 사이에서) 다음 경고를 트리거 벽 및 -Wextra 컴파일러 플래그 (이하 GCC의 문서 참조)
- -Wunused 기능
- -Wunused 라벨
- -Wunused 값
- --Wunused 변수
- -Wunused 파라미터
- -Wunused-하지만 설정된 파라미터
당신이 그걸하고 싶지 않은 몇 가지 이유가 있다면, 그냥 -Wunused을 추가하면 -Wallra 또는 -Wextra가 추가하는 플래그없이 위의 사용 된 옵션 만 사용할 수 있습니다.
그러나 사용되지 않는 함수 매개 변수에 대한 경고를 얻기 위하여
, 당신 은 -Wextra -Wunused이 (-Wall가 -Wunused을 의미 참고) 지정하거나 별도로 -Wunused-매개 변수를 지정해야 하나. 물론
, 이것은 당신이 정리를 할 필요가 있다는 것을 의미 수동으로
당신은 당신이뿐만 아니라 -pedantic을 추가하여 오류에 대한 모든 경고를 변환 할 수있는 여분의 현학적을하고 싶다면 -errors 플래그
자세한 내용은 GCC Warnings Options documentation을 참조하십시오.
어쩌면 의미 분석을위한 [clang 정적 분석기] (http://clang-analyzer.llvm.org/)일까요? –
사실, clang은 정상 컴파일 중에도 사용되지 않는 변수와 함수에 대해 경고합니다. – ltjax
이것은 생각보다 어렵습니다. #include가 사용되지 않았는지 어떻게 알 수 있습니까? 나는 당신이'malloc()'을 거기에있는'malloc_dbg()'에 매핑하는 #define과 같은 것을 가질 수 있다는 것을 의미한다. 그리고 나서 그 파일을 포함하거나 포함하지 않고 컴파일한다. – sharptooth