compile_commands.json에서 필요한 정보를 읽어 다양한 정적 분석 도구를 실행할 수있는 간단한 프론트 엔드 도구.
다른 도구와의 통합을위한 출력 형식, 필요할 때의 평행 화, 컴파일러 플래그를 재정의/재구성하는 능력 및 "도구"플러그인 요구 사항에 따라 출력 형식을 제공합니다.
현재 개발은 주로 Windows에서 수행되지만 자체 프로젝트 및 분석기를위한 Python, 작업 개발 환경이있는 모든 플랫폼에서 작동해야합니다. 현재 지원되는 것 :
프로젝트는 PYPI에서 소스 배포로 제공됩니다.
pip install processcdb
ProcessCDB도 거의 의존성을 설치하기 때문에 설치에 PIPX를 사용하는 것이 좋습니다.
패키지가 설치되면. 다음과 같이 구성 파일을 생성합니다.
processcdb --dump-config
이렇게하면 기본 위치로 BareBones 구성 파일이 생성됩니다 (-Config 인수로 나중에 덮어 쓸 수 있음). 이 파일을 편집하여 해당 분석기가 실행 파일을 가리 키도록 "바이너리"옵션을 가리 키십시오. Windows에서는 파일 확장자를 생략하지 마십시오.
기본 도움 :
processcdb --help
compile_commands.json을 생성하는 프로세스 후에는 다음과 같은 선택된 도구로 ProcessCDB를 실행할 수 있습니다.
processcdb --tool clang-tidy
이렇게하면 현재 작업 디렉토리에서 JSON 파일을 찾아서 Clang-Tidy가 프로세스 CDB Comfig 파일 또는 도구 자체 구성 파일에서 블랙리스트에 포함되지 않은 모든 파일에 대해 도구를 실행하고 표준 출력에 대한 출력을 생성합니다. 현재 작업 디렉토리 변경에 액세스 할 수없는 경우 도구를 실행 해야하는 경우 --cdb 및 Absolute 위치를 통과 할 수 있습니다.
processcdb --tool clang-tidy --cdb D:srcmyprojectbuildcompile_commands.json
도구 출력을 --output 인수가있는 파일로 지시 할 수 있습니다. 특정 도구 ( -t )는 사후 처리 또는 공구 별 목적에 대한 추가 주장을 제공 할 수 있음을 주목할 가치가 있습니다.
processcdb --tool clang-tidy --cdb ~/src/myproject/build/compile_commands.json --output scan.log --xml
--config 인수를 전달하지 않고 ProcessCDB가 호출되면 기본 구성 파일이 사용됩니다. 위치는 운영 체제에 따라 다릅니다. 다른 종류의 설정으로 여러 프로젝트를 분석해야하거나 특정 스캐너의 다른 버전으로 분석하려면 여러 구성 파일을 사용하십시오.
예를 들어, Clang 11.0.0으로 스캔하려는 코드베이스가있는 경우 프로젝트는 실제로 Microsoft의 MSVC로 컴파일되어 있으며 Clang과 컴파일하는 또 다른 프로젝트가 있습니다.
processcdb --tool clang-tidy --config location/to/config/msvc17_clang_interop.ini
--config 인수를 전달하지 않고 ProcessCDB가 호출되면 기본 구성 파일이 사용됩니다. 구성 파일을 생성하려면 ProcessCDB로 --dump-config 전달하십시오. 기본 구성 파일을 파일에 저장합니다. 표준 출력을 캡처하거나 --config 매개 변수를 제공하십시오.
각 도구에는 별도의 섹션이 있으며 각 섹션에는 도구 별 섹션 또는 기본적으로 구성 할 수 있습니다. 최소. 단일 공구 구성 요소는 다음과 같습니다.
[clang-tidy]
binary=C:llvm-11.0.0binclang-tidy.exe
여기에는 Clang-Tidy 도구 섹션이 있습니다. 여기서 변수 binary c:llvm-11.0.0binclang-tidy.exe 값으로 설정하고 있습니다.
Python configparser 모듈은 파일의로드/구문 분석에 사용됩니다.
다음 변수는 도구간에 공유됩니다.
binary - 스캐너의 절대 경로.file_blacklist 스캔에서 생략 해야하는 파일 사양 목록arg_blacklist 도구로 전달해서는 안되는 컴파일러에 전달 된 명령 줄 인수 목록.arg_additions 키/값 쌍의 목록. JSON에서 키가 발견되면 값은 도구의 인수에 배치됩니다.jobs - 기본 번호 프로세스 프로세스 CDB 또는 도구가 처리하는 데 사용할 수 있습니다. 자동 감지 용 0.default_includes compile_commands.json에 지정되지 않을 수있는 경로를 포함하여 도구에 자동으로 전달 해야하는 경로 목록default_args compile_commands.json에서 제공하지 않은 도구로 전달 해야하는 인수 목록includes_as_system : normal에서 변환 해야하는 파일 사양 목록 -iclude -isystem include.목록이고 여러 값을 허용하는 각 구성 옵션은 세미콜론을 항목 분리기로 사용하십시오.
arg_blacklist 사용하면 불필요한 명령 줄 인수를 제거 할 수 있으며 arg_addition 사용하여 새로운 인수를 주입 할 수 있습니다. 예를 들어, MSVC에서 프로젝트를 컴파일하고 예외가 활성화 된 경우 구성에 따라 Clang-Tidy 도구가 여전히 올바르게 작동 할 수 있습니다.
[clang-tidy]
binary=C:llvm-11.0.0binclang-tidy.exe
arg_blacklist=EHsc
arg_additions=EHsc=-Xclang,-fcxx-exceptions
먼저, ProcessCDB는 compile_commands.json이 /EHsc 인수를 가질 수 있고, 2 개의 새로운 인수 -Xclang 과 '-fcxx-exceptions'를 추가 한 다음 Arg_BlackList가 원래 /EHsc 를 제거합니다.
CPPCHECK 도구에는 옵션 supression_file 도 있습니다. 필요한 경우 CPPCHECKS 자체 억제 파일의 절대 위치 여야합니다.
직접 Jenkins 지원을 위해 Logfile을 XML로 변환하는 Clang-Tidy Toool의 능력은 CodeChecker 프로젝트의 일부이며 Apache 2.0에 따라 라이센스가 부여됩니다.
홈 : https://github.com/rasjani/processcdb 문제 : https://github.com/rasjani/processcdb/issues