Java에는 FindBugs , Checkstyle 및 PMD 와 같은 매우 훌륭한 오픈 소스 정적 분석 도구가 있습니다. 이러한 도구는 사용하기 쉽고 매우 유용하며 여러 운영 체제에서 실행되며 무료 입니다.
상용 C ++ 정적 분석 제품을 사용할 수 있습니다. 이러한 제품은 훌륭하지만 비용은 학생에게 너무 비싸며 일반적으로 시험판을 얻는 것이 다소 어렵습니다.
대안은 여러 플랫폼 (Windows 및 Unix)에서 실행되는 오픈 소스 C ++ 정적 분석 도구를 찾는 것입니다. 오픈 소스 도구를 사용하면 특정 요구에 맞게 수정할 수 있습니다. 도구를 찾는 것은 쉬운 일이 아닙니다.
아래는 다른 사람들이 찾거나 제안한 C ++ 정적 분석 도구의 간단한 목록입니다.
- C ++ 확인 http://sf.net/projects/cppcheck/
- 오 잉크 http://danielwilkerson.com/oink/index.html
- C 및 C ++ 코드 카운터 http://sourceforge.net/projects/cccc/
- 부목 (답변에서)
- 모질라 포크 (답변) (이것은 이제 Oink의 일부입니다)
- Mozilla의 Dehydra (답변)
-Weffc++
답변에서 GNU g ++에 대한 옵션 사용
어떤 무엇인가 다른 휴대용 오픈 소스 C ++ 정적 분석 도구는 누구나 알고 권장 될 수있다?
일부 관련 링크.
답변
Oink는 Elsa C ++ 프론트 엔드 위에 구축 된 도구입니다. 모질라 포크는 엘사 / 오 잉크 포크입니다.
참조 : http://danielwilkerson.com/oink/index.html
답변
답변
GNU 컴파일러와 관련하여 gcc에는 이미 -Wall에 대한 추가 경고 를 가능하게하는 내장 옵션이 있습니다 . 옵션은 -Weffc ++ 이며 그의 책 ” Effective and More Effective C ++ “에 실린 Scott Meyers 의 일부 지침 위반에 관한 것 입니다.
특히이 옵션은 다음 항목을 감지합니다.
- 동적으로 할당 된 메모리가있는 클래스에 대한 복사 생성자와 할당 연산자를 정의하십시오.
- 생성자의 할당보다 초기화를 선호하십시오.
- 기본 클래스에서 소멸자를 가상으로 만듭니다.
- “operator =”가 * this에 대한 참조를 리턴하도록하십시오.
- 객체를 반환해야 할 때 참조를 반환하지 마십시오.
- 접두사와 접미사 형식의 증분 및 감소 연산자를 구별합니다.
- “&&”, “||”또는 “,”를 오버로드하지 마십시오.
답변
현재 개발 중이지만 clang 은 C 분석을 수행하며 시간이 지남에 따라 C ++를 처리하는 것을 목표로합니다. LLVM 프로젝트 의 일부입니다 .
업데이트 : 랜딩 페이지에 “분석기는 지속적인 작업 중”이라고 표시되어 있지만 C와 C ++ 모두에 대한 정적 분석기로 문서화 되었습니다.
질문 : 정적 분석을 위해 GCC / Clang을 어떻게 실행할 수 있습니까? (경고 만)
컴파일러 옵션 : -fsyntax-only
답변
다른 사람이 -Weffc ++을 언급했지만 실제로는 기본적으로 켜지지 않는 유일한 GCC 경고 중 하나입니다. 그러나 내가 설정하는 경고 세트는 키트에서 가장 중요한 정적 분석 도구입니다. 권장 경고 의 전체 목록을 볼 수 있습니다 .
요약해서 말하자면:
-pedantic-벽 -Wextra -Wcast-align -Wcast-qual -Wctor-dtor-privacy -Wdisabled-optimization -Wformat = 2 -Winit-self -Wological-op -Wmissing-declarations-결산 포함 디렉토리 -Wnoexcept -Wold -스타일 캐스트-오버로드 가상-중복 데클-섀도우-워드 변환 -Wsign- 프로모션 -Null- 널 센티넬 -Wstrict-overflow = 5 -Wswitch-default -Wundef -Werror-미사용
이들 중 일부는 gcc의 새로운 버전을 필요로하므로 4.5 이상으로 멈춰 있으면 목록에서 제거해야 할 수도 있습니다.
답변
John Carmack은 또한 “정적 코드 분석”에 관한 이 흥미로운 블로그 게시물 에서 PVS-Studio 를 언급합니다 .
답변
오픈 소스가 실제로 “무료”를 의미한다면 Microsoft의 빠른 분석이 좋습니다. 물론 Windows 전용. Visual Studio와 컴파일러에 완전히 통합되어 있습니다. 예 :
cl /analyze Sample.cpp