2009-06-15 5 views
13

Linux에서 사용할 수있는 정적 코드 분석 도구에 대한 비교를 한 사람이 있습니까?리눅스에서 정적 코드 분석 도구의 비교?

  • 약간 조정할, 스파 스
  • ,
  • 부목,
  • RATS의 -Wall 옵션을 사용
  • : 다음과 같은 도구의 강점과 약점은 무엇입니까.

이러한 도구 중 하나만 사용하는 것이 적절하다고 생각하십니까?

저는 권장 사항을 찾고 있지는 않지만 (많이 찾을 수 있지만) 사용 가능한 도구를 직접 비교하고 있습니다.

답변

6

물론 wikipedia list이 있습니다. 이 목록은 그냥 목록 일 뿐이며 비교는 아니지만 페이지에있는 the links 중 하나는 질문에 적어도 부분적으로 답하는 것 같습니다. 나열된 몇 가지 프로그램에 대해 (간략히) 언급합니다.

4

-Wall을 사용하는 것은 당연히 모든 C 개발자를위한 것입니다. 또한, -Wextra를 추가로 사용하는 것도 좋은 생각 일 수 있습니다.

부목이 응용 프로그램에서하지만 대부분의 경우 다른 잠재적 인 약점을 찾을 수 있습니다 (!) 당신이 정말로 당신이에서/같은 주석을 삽입 할 것을 경고하고 대부분의 시간으로 무엇을 의미하는지 부목을 이해해야 그래서 거짓 경고를 출력/또는/사용하지 않음/코드에서 부목은 소리를 지르지 않습니다. 부목을 사용하면 중요하지 않은 경고를 필터링해야합니다. 그렇지 않으면 많은 메시지를 분석하고 스크롤하는 데 너무 많은 시간을 소비하게됩니다.

이러한 도구는 정적 코드 검사 만 수행합니다. 런타임 메모리 누수를 찾으려면 valgrind를 사용해야합니다.

+0

예, Windows 환경에서 정적 체커에 대한 경험이 있으므로 오탐 (false positives) 문제를 알고 있습니다. – Makis

3

나는 부목을 몇 번 사용했고 너무 장황한 것을 발견했습니다. 나는 대부분경고를 비활성화했습니다. 이 도구는 코드에 올바르게 주석을 달면 흥미로운 결과를 제공 할 수 있다고 생각합니다. 코드 주석이 없으면이 도구는 별 도움이되지 않습니다.

때때로 나는 희소하게 사용하고 귀중한 공구이라고 생각합니다. 그것은 "cgcc"라고 불리는 gcc의 래퍼 인 을 제공합니다. 따라서 많은 소스 파일 (export CC=cgcc 및 voilà)이 포함되어 있어도 스파 스 프로그램을 실행하는 것이 간단합니다. 이 프로그램은 커널 소스 코드를 분석 할 때 가장 잘 작동합니다.

사이드 노트로, 나는 또한 pmccabe를 정기적으로 사용합니다. pmccabe는 정적 분석기가 아닙니다 : 순환 복잡도를 계산합니다. 프로그램에서 가장 복잡한 기능을 찾으려면 이 도움이 될 수 있습니다. 이러한 기능은 오류가 발생하기 쉬운이며 테스트하기가 쉽지 않습니다.

관련 문제