diff --git a/docker/code-analysis/static_code_analysis.sh b/docker/code-analysis/static_code_analysis.sh index 44c069f459483c1fa85d07eb2d165c8c15a65d4e..3f84005692ef313c9446eb0a71b4ae35d414859d 100755 --- a/docker/code-analysis/static_code_analysis.sh +++ b/docker/code-analysis/static_code_analysis.sh @@ -1,4 +1,5 @@ #!/bin/bash +set -eo pipefail log() { @@ -106,7 +107,7 @@ run_cpd_check() exec_cmd /usr/local/pmd/bin/run.sh cpd --language c --exclude ./test/ ${CPD_OPTIONS} --files ${SOURCE_FOLDER} } -main() +validate_c_code() { log "SOURCE_FOLDER: ${SOURCE_FOLDER}" log "COMPILATION_FIXUP: ${COMPILATION_FIXUP}" @@ -126,6 +127,11 @@ main() fi fi + if [ "${SOURCE_FOLDER}" == "SKIP" ]; then + log "Skipping C code analysis" + exit 0 + fi + # Install pre-req if present/defined if [ -f "./gitlab-ci/install-dependencies.sh" ]; then log "Installing prerequisites for compilation" @@ -147,10 +153,40 @@ main() run_cppcheck_validation # Run clang analysis - run_cppcheck_clang_validation + # run_cppcheck_clang_validation # Run infer analysis run_infer_analysis } -main "$@" +validate_shell_script() +{ + log "Running optional tests" + if [ -z "${SHELL_SRC}" ]; then + log "Skipping ShellCheck path not defined" + exit 0 + fi + + if [ "${SHELL_SRC}" == "SKIP" ]; then + log "Skipping ShellChecks ..." + exit 0 + fi + + log "Running shellcheck ${SHELLCHECK_OPTIONS} ${SHELL_SRC}" + exec_cmd shellcheck ${SHELLCHECK_OPTIONS} ${SHELL_SRC} +} + +validation_type="${1}" + +case "${validation_type}" in + c_code) + validate_c_code "${@}" + ;; + shell_script) + validate_shell_script "${@}" + ;; + *) + echo "Unsupported validation type: ${validation_type}" + exit 1 + ;; +esac diff --git a/static-code-analysis.yml b/static-code-analysis.yml index 36ecd8247c9f78dc44332a6b47376ad534f63cdc..b0f27b54ec4b88b4def8fc49a5744ece1cc0b3b8 100644 --- a/static-code-analysis.yml +++ b/static-code-analysis.yml @@ -1,5 +1,5 @@ variables: - COMMON_IMAGE: "dev.iopsys.eu:5050/iopsys/gitlab-ci-pipeline/code-analysis:1.2" + COMMON_IMAGE: "dev.iopsys.eu:5050/iopsys/gitlab-ci-pipeline/code-analysis:1.3" FLAWFINDER_OPTIONS: "" CPD_OPTIONS: "--minimum-tokens 200" CPPCHECK_OPTIONS: "" @@ -14,10 +14,7 @@ run_static_code_analysis: stage: static_code_analysis allow_failure: false script: - - "static_code_analysis.sh" - rules: - - if: $SOURCE_FOLDER - when: always + - "static_code_analysis.sh c_code" artifacts: when: on_failure paths: @@ -27,11 +24,6 @@ run_static_code_analysis: run_shell_checks: image: ${COMMON_IMAGE} stage: static_code_analysis - allow_failure: true + allow_failure: false script: - - echo "Running optional tests" - - echo "Running shellcheck ${SHELLCHECK_OPTIONS} ${SHELL_SRC}" - - "shellcheck ${SHELLCHECK_OPTIONS} ${SHELL_SRC}" - rules: - - if: $SHELL_SRC - when: always + - "static_code_analysis.sh shell_script"