diff --git a/docker/code-analysis/Dockerfile b/docker/code-analysis/Dockerfile index 4896a7505daf28656d2f1f35079f626f8fc53940..f73cc270bd8cff6b3e7096bd832a96b091ef2705 100644 --- a/docker/code-analysis/Dockerfile +++ b/docker/code-analysis/Dockerfile @@ -64,7 +64,9 @@ RUN \ libz-dev \ sqlite3 \ # Dependencies for ieee1905 - libpcap-dev + libpcap-dev \ + clang \ + shellcheck RUN mkdir /opt/dev && \ mkdir /etc/config diff --git a/static-code-analysis.yml b/static-code-analysis.yml index 65ffc0aa74cc0f68fee5770119c61abca76b1a19..17e4f0a20be97068ee3189fd8bc94909087f9839 100644 --- a/static-code-analysis.yml +++ b/static-code-analysis.yml @@ -1,9 +1,11 @@ variables: - RUN_FLAWFINDER: "flawfinder --falsepositive -m 4" - RUN_CPPCHECK: "cppcheck --enable=all --error-exitcode=1 --suppress=unusedFunction --suppress=unreadVariable --suppress=unmatchedSuppression ." - RUN_CPD: "/home/user/pmd-bin-6.19.0/bin/run.sh cpd --minimum-tokens 200 --language c --exclude ./test/cmocka --files" + COMMON_IMAGE: "dev.iopsys.eu:5050/iopsys/gitlab-ci-pipeline/code-analysis:0.28" SOURCE_FOLDER: "src" - COMMON_IMAGE: "dev.iopsys.eu:5050/iopsys/gitlab-ci-pipeline/code-analysis:0.27" + SHELL_SRC: "" + FLAWFINDER_OPTIONS: "-m 4 --error-level=4" + CPPCHECK_OPTIONS: " --enable=all --inline-suppr --suppress=unusedFunction --suppress=unreadVariable" + CPD_OPTIONS: "--minimum-tokens 200 --language c --exclude ./test/cmocka --files" + SHELLCHECK_OPTIONS: "-s dash -e SC2034,SC1091 -S info" DEBUG: "FALSE" run_static_code_analysis: @@ -11,11 +13,34 @@ run_static_code_analysis: stage: static_code_analysis allow_failure: false script: - - echo ${RUN_FLAWFINDER} - - flawfinder --version - - "${RUN_FLAWFINDER} ${SOURCE_FOLDER}" - - echo ${RUN_CPPCHECK} - - cppcheck --version - - "${RUN_CPPCHECK} ${SOURCE_FOLDER}" - - echo ${RUN_CPD} - - "${RUN_CPD} ${SOURCE_FOLDER}" + - echo "flawfinder ${FLAWFINDER_OPTIONS} ${SOURCE_FOLDER}" + - "flawfinder ${FLAWFINDER_OPTIONS} ${SOURCE_FOLDER}" + - echo "cppcheck --error-exitcode=1 ${CPPCHECK_OPTIONS} ${SOURCE_FOLDER}" + - "cppcheck --error-exitcode=1 --inline-suppr ${CPPCHECK_OPTIONS} ${SOURCE_FOLDER}" + - echo "/usr/local/pmd/bin/run.sh cpd ${CPD_OPTIONS}" + - "/usr/local/pmd/bin/run.sh cpd ${CPD_OPTIONS} ${SOURCE_FOLDER}" + +run_compilation_test: + image: ${COMMON_IMAGE} + stage: static_code_analysis + allow_failure: false + script: + - "${COMPILE}" + rules: + - if: $COMPILE + when: always + +run_optional_checks: + image: ${COMMON_IMAGE} + stage: static_code_analysis + allow_failure: true + script: + - echo "Running optional tests" + - echo "Running shellcheck ${SHELLCHECK_OPTIONS} ${SHELL_SRC}" + - if [ -n "${SHELL_SRC}" ]; then shellcheck ${SHELLCHECK_OPTIONS} ${SHELL_SRC}; fi + - echo "Running CPPCHECK with threadsafety addon" + - "cppcheck --error-exitcode=0 --addon=threadsafety ${SOURCE_FOLDER}" + - echo "Running CPPCHECK with cert addon" + - "cppcheck --error-exitcode=0 --addon=cert ${SOURCE_FOLDER}" + - echo "Running FlawFinder with depth 3" + - "flawfinder -m 3 --error-level=5 ${SOURCE_FOLDER}"