Skip to content
Snippets Groups Projects
Verified Commit 7055e061 authored by Lars Bilke's avatar Lars Bilke
Browse files

[ci] Enable cppcheck code quality report.

parent e2ef8676
No related branches found
No related tags found
No related merge requests found
version: "2" version: "2"
exclude_patterns: exclude_patterns:
- "ThirdParty/" - "ThirdParty/"
- "Tests/Data/" - "Tests/"
plugins: plugins:
markdownlint: duplication:
enabled: true enabled: false
cppcheck:
stage: check
image: $CONTAINER_GCC_IMAGE
needs: []
before_script:
- mkdir -p build
- cd build
script: >-
cmake .. -G Ninja -DCMAKE_BUILD_TYPE=Release -DOGS_USE_CONAN=OFF \
-DOGS_USE_UNITY_BUILDS=OFF -DCMAKE_EXPORT_COMPILE_COMMANDS=ON
bash cppcheck.sh
artifacts:
reports:
codequality: build/cppcheck.json
expire_in: 1 week
code_quality: code_quality:
stage: check stage: check
tags: [docker, envinf1] tags: [docker, envinf1]
......
if(NOT CPPCHECK_TOOL_PATH) if(NOT CPPCHECK_TOOL_PATH)
return() return()
endif() endif()
set(CMAKE_EXPORT_COMPILE_COMMANDS ON)
configure_file(${PROJECT_SOURCE_DIR}/scripts/test/cppcheck.in.sh ${PROJECT_BINARY_DIR}/cppcheck.sh)
if(DEFINED ENV{NUM_THREADS}) if(DEFINED ENV{NUM_THREADS})
set(CPPCHECK_THREADS -j $ENV{NUM_THREADS}) set(CPPCHECK_THREADS -j $ENV{NUM_THREADS})
...@@ -8,9 +10,11 @@ endif() ...@@ -8,9 +10,11 @@ endif()
add_custom_target(cppcheck add_custom_target(cppcheck
COMMAND ${CPPCHECK_TOOL_PATH} COMMAND ${CPPCHECK_TOOL_PATH}
--force --project=${PROJECT_BINARY_DIR}/compile_commands.json
--language=c++
--std=c++17
--enable=all --enable=all
# --inconclusive --inconclusive
${CPPCHECK_THREADS} ${CPPCHECK_THREADS}
-i ${PROJECT_BINARY_DIR}/CMakeFiles -i ${PROJECT_BINARY_DIR}/CMakeFiles
-i ${PROJECT_SOURCE_DIR}/ThirdParty -i ${PROJECT_SOURCE_DIR}/ThirdParty
......
# Runs cppcheck with GitLab CI (CodeClimate) output
OUTPUT_FILE=${PROJECT_BINARY_DIR}/cppcheck.json
${CPPCHECK_TOOL_PATH} \
--project=${PROJECT_BINARY_DIR}/compile_commands.json \
--language=c++ \
--std=c++17 \
--enable=all \
--inconclusive \
-j 4 \
-i ${PROJECT_BINARY_DIR}/CMakeFiles \
-i ${PROJECT_SOURCE_DIR}/ThirdParty \
-i ${PROJECT_SOURCE_DIR}/Applications/DataExplorer \
-i ${PROJECT_SOURCE_DIR}/Tests \
--template='{\n "description": "{message}",\n "location": {\n "path": "{file}",\n "lines": {\n "begin": {line}\n }\n }\n},' \
--output-file=$OUTPUT_FILE \
echo "$( \
# add brackets
printf '[\n'; \
cat $OUTPUT_FILE | \
# strip source code absolute path
sed 's|${PROJECT_SOURCE_DIR}/||' | \
# escape strings
sed 's/string literal "\(.*\)" to/string literal \\"\1\\" to/g' | \
# remove last comma
sed '$s/,$//'; \
printf ']\n')" \
> $OUTPUT_FILE
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment