어떤 정적 코드 분석기 (있는 경우)를 사용합니까? 파이썬 용 PyLint를 사용해 왔는데 꽤 만족 스럽습니다. 이제는 C 코드와 비슷한 것이 필요합니다.C 용 정적 코드 분석기
정상적인 일일 사용을 위해 출력량을 얼마나 많이 억제해야합니까?
어떤 정적 코드 분석기 (있는 경우)를 사용합니까? 파이썬 용 PyLint를 사용해 왔는데 꽤 만족 스럽습니다. 이제는 C 코드와 비슷한 것이 필요합니다.C 용 정적 코드 분석기
정상적인 일일 사용을 위해 출력량을 얼마나 많이 억제해야합니까?
위키 백과는 다양한 언어 (C 포함)로 list of static code analysis tools을 유지합니다.
저는 개인적으로 PC-Lint
과 Splint
을 모두 사용했습니다. 최선의 선택은 귀하가 작성한 신청 유형에 따라 다릅니다. 그러나 어떤 도구를 사용하든 관계없이 도구와 코드를 올바르게 조정할 때까지 신호 대 잡음 비율이 낮습니다.
PC-Lint
은 내가 사용한 가장 강력한 린트 도구입니다. 기존 프로젝트에 추가하면 신호 대 잡음비가 낮아질 수 있습니다. 그러나 도구와 코드가 올바르게 구성되면 표준 빌드 프로세스의 일부로 사용할 수 있습니다. 마지막으로 사용한 주요 프로젝트는 PC-Lint
경고가 빌드를 손상시킬 수 있도록 설정했습니다. PC-Lint의 라이센스 비용은 $ 389이지만 비용이들 것입니다.
Splint
은 위대한 오픈 소스 도구입니다. 여러 프로젝트에서이 프로젝트를 사용했지만 ANSI C가 아닌 컴파일러 (예 : 임베디드 시스템 프로젝트)를 사용할 때 구성하기가 어려울 수 있음을 발견했습니다.
Valgrind
또한 동적 분석 도구로 고려할 가치가 있습니다.
귀하는 특히 SourceMonitor
에 대한 피드백을 요청했습니다. 이 도구는 코드에 대한 흥미로운 메트릭을 제공하지만 그러한 종류의 분석을 제공하지 않으므로 좋은 린트 도구의 보완 도구로 사용해야합니다.
, SourceMonitor
는 :
... , 모듈의 상대적 복잡성을 식별하는 방법을 많은 코드 당신이 가지고 알아보십시오. 예를 들어 SourceMonitor를 사용하여 결함이 포함될 가능성이 가장 높은 코드 을 식별 할 수 있으므로 공식적인 검토가 필요합니다.
최근 프로젝트에서 사용 했으므로 (임베디드 시스템 코드의 경우에도) 사용하기 쉽습니다. 복잡성 측정 항목은 오류가 발생하기 쉽고 유지 관리가 쉬운 코드 개발을위한 훌륭한 리소스입니다.
SourceMonitor
은 메트릭 수집을 자동화하려는 경우 올바른 형식의 XML뿐만 아니라 좋은 출력 그래프를 제공합니다. 유일한 단점은 도구가 Windows에서만 실행된다는 것입니다.
몇 가지 C 확장을 지원하는 Microchip C18 컴파일러로 작업 중이므로 Splint에 대한 여러분의 의견은 정말 유용합니다. 감사. – Josip
저는 PCLint을 영원히 사용했으며 실제로 좋아했습니다. 나는 그들이 C#에 들어가기를 바란다 ... 그들은 모든 잡지의 C 또는 C++ 코드에 관한 퀴즈를 가진 사람들이다.
거기에 splint 있지만, 솔직히 말해서, 나는 그것을 작동시킬 수 없었습니다; 제 플랫폼에서는 너무 지나치게 활동적입니다. 실제로, 나의 가장 많이 사용되는 "보풀"는 의미 그 어떤 반 gcc
-std=c89 -pedantic -W -Wall -Wstrict-prototypes -Wunreachable-code -Wwrite-strings -Wpointer-arith -Wbad-function-cast -Wcast-align -Wcast-qual
물론, 나는 대부분 잊어 버린에 대한 다음과 같은 경고 플래그입니다. 그러나 그들은 꽤 많은 것들을 잡습니다.
lint는 모듈 간 검사를하기 때문에 lint와 컴파일러 경고에는 큰 차이가 있습니다. 컴파일러는 컴파일 된 소스 파일과 포함 된 헤더 파일의 문제에 대해서만 경고 할 수 있습니다. – Dipstick
llvm clang 프로젝트에 http://clang-analyzer.llvm.org이 하나 있습니다. 나는 그것을 직접 시도하지 않았지만 그것을하고자한다.
그것은 행동에 꽤 좋아 보인다 : http://www.mikeash.com/?page=pyblog/friday-qa-2009-03-06-using-the-clang-static-analyzer.html 위는 오브젝티브 C입니다하지만 우리는 PC-Lint를 사용하고 매우 행복하다 C.
에 대해 동일해야합니다. 다음 억제 해제는 당신이
메시지 억제 및 튜닝에 대한 몇 가지 캠프가 될 것 같다
억제 해제 모든 것을 유지. 이것은 lint 당 100MiB + 텍스트 덤프 (한 줄에 하나의 에러)가 핵심 라이브러리 (많은 오래된 코드)에서 실행된다는 것을 의미합니다.
사용자 정의 diff
과 같은 도구는 변경 사항을 감시하고 커밋의 작성자에게 전자 메일을 보내 대부분의 사람들이 몇 줄까지 검토해야하는 금액을 유지합니다. 몇 가지 기본적인 데이터 마이닝을 통해 오류에 대한 흥미로운 통계를 수집합니다.
당신은 정말 등, 기존의 경고를 고정 "포인트"를 제공,보다 자세한 설명을 다시 오류에 하이퍼 링크, 여기에 광택 얻을 수 있습니다 ...
내 질문에 확장하려면 : 누구든지 SourceMonitor (http://www.campwoodsw.com/sourcemonitor.html)를 사용하고 어떻게 평가합니까? – Josip
중복 된 http://stackoverflow.com/questions/2873/choosing-a-static-code-analysis-tool? –