문제

Linux에서 사용할 수있는 정적 코드 분석 도구와 비교 한 사람이 있습니까? 다음 도구의 강점과 약점은 무엇입니까?

  • Lintian,
  • 부족한,
  • 부목,
  • 쥐,
  • -wall 옵션을 사용합니다.

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

권장 사항을 찾고 있지는 않지만 (많은 것을 찾을 수 있습니다) 사용 가능한 도구 간의 직접 비교.

도움이 되었습니까?

해결책

물론 있습니다 위키 백과 목록. 그 목록은 단지 목록, 비교가 아니라 링크 페이지에서 최소한 부분적으로 귀하의 질문에 대답하는 것처럼 보이며 (매우 간단히) 나열된 몇 가지 프로그램을 언급합니다.

다른 팁

-벽을 사용하는 것은 물론 모든 C 개발자에게 있어야합니다. 또한 -wextra를 사용하는 것이 좋습니다.

Splint는 응용 프로그램에서 다른 잠재적 약점을 찾을 수 있지만 대부분의 경우 (!) 허위 경고를 인쇄하므로 부목이 어떤 경고와 같은 경고와 같은 주석을 삽입 해야하는지 실제로 이해해야합니다.밖으로/ 또는 /사용되지 않았습니다/ 코드에서 부목은 당신에게 소리를 지르지 않습니다. Splint를 사용하면 중요하지 않은 경고를 필터링해야합니다. 그렇지 않으면 많은 메시지를 분석하고 스크롤하는 데 너무 많은 시간을 소비했습니다.

이 도구는 정적 코드 점검 만 수행합니다. Valgrind를 사용하여 런타임 메모리 누출을 찾아야합니다.

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

나는 때때로 희박한 것을 사용하고 그것을 귀중한 도구로 간주합니다. "CGCC"라고 불리는 GCC 주변의 래퍼를 제공합니다. 결과적으로 많은 소스 파일이 포함되어 있어도 프로그램에서 드문 드문 실행이 간단합니다.export CC=cgcc 그리고 voilà). 이 프로그램은 커널 소스 코드를 분석하는 경우 가장 잘 작동합니다.

사이드 니트로서, 나는 또한 정기적으로 PMCCABE를 사용합니다. PMCCABE는 정적 분석기가 아닙니다. 순환 복잡성을 계산합니다. 프로그램에서 가장 복잡한 기능을 찾는 데 도움이 될 수 있습니다. 이러한 기능은 오류가 발생하기 쉽고 테스트하기 어려울 수 있습니다.

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