2013-03-03 2 views
33

Cppcheck를 사용하면 자신 만의 규칙 파일을 만들 수 있지만 cppcheck의 기능이 얼마나 많이 노출되어 있는지 알 수 없습니다.cppcheck의 규칙 집합

누구나 JSF 또는 MISRA 규칙을 적용 할 세트 작업을하고 있습니까?

+2

코드에서 __error__ 또는 __style__ 문제를 확인 하시겠습니까? –

+1

예를 들어 [MISRA] (http://en.wikipedia.org/wiki/MISRA_C)는 C 언어의 강력한 하위 집합이며 안전하지 않은 구성을 금지합니다. 위키는 "대부분의 지침은 정적 코드 분석을 수행하는 도구를 사용하여 확인할 수 있습니다." 그러나 여기에 나열된 도구는 상업용입니다. MISRA는 코드에 오류가 없도록 만들지 만, MISRA 확인 코드에는 오류를 기록하기가 조금 더 어렵습니다. MISRA 검사는 주로 스타일 검사이지만 여전히 유용합니다. – osgx

답변

9

모든 MISRA/JSF 규칙과 지시문을 cppcheck 규칙으로 구현할 수 없으며 주로 특정 C 언어 기능과 구문을 제한하거나 스타일 관련 (일부는 염두에 두어야합니다./.--> 후, 단일 행에 인수의 수, 메모리에 액세스하는 다양한 방법을 제공하는 공용체의 사용, 서명되지 않은/서명 된 char 이전의 존재 등).

사용자 Ira Baxter 다른 질문이 있으면 comment에 꽤 많이 못 박았습니다. cppcheck : 모든 것을 패턴으로 표현하거나 단순화 할 수는 없습니다. 맞춤 규칙에 대한 패턴에 의존하여은 높은 수준의 문제를 처리하는 것을 어렵게합니다. 예를 들어 유형(예 : sizeof() 유형)을 구문 분석하면 다음과 같이 사용 된 토큰을 구문 분석하고 수집해야합니다. 타입 표현), 계승(예 : 클래스, 파생 된 클래스 포함, 가상 및 비 가상 모두 사용)범위. cppcheck에 하드 코딩해야합니다 (항상 cppcheck를 포크 할 수 있습니다 ...)

어떤 경우에도 MISRA (또는 JSF) 규칙을 사용 했습니까? 이것은 프로젝트의 요구 사항입니까? 그렇지 않다면 MISRA 가이드 라인 (이미 JSF 코드를 가지고있다)의 사본을 가져 와서 PCRE 패턴을 사용하여 구현할 수있는 코드를 확인할 수있다. 요구 사항 인 경우 MISRA/JSF 지침을 확인하고 두 도구를 모두 사용하는 상용 제품에 "투자"하십시오.

마지막주의 사항 : 모든 MISRA/JSF 규칙이 필요하지 않으며, 많은 도구가 그 중 일부만 남겨 둡니다.

+0

패턴 일치를 넘어선 규칙의 경우 [clang-tidy] (http : //clang.llvm)의 프레임 워크를 사용할 수 있습니다. .org/extra/clang-tidy.html). – legalize

+0

@johnwait 특정 규칙 집합은 요구 사항이 아니었지만 공식적인 규칙 집합은 (!)이었고 규칙을 가지려면 자동화 된 방법으로 검사 할 수 있습니다. 결국 우리는 우리 자신의 목록을 작성하고 코드 리뷰를 수행합니다. –

관련 문제