From 3d68606ef451841d0bf07c4a07060579a824e2e8 Mon Sep 17 00:00:00 2001 From: Vivek Kumar Dutta <vivek.dutta@iopsys.eu> Date: Mon, 11 Nov 2024 11:48:57 +0530 Subject: [PATCH] Enhance error handling --- docker/code-analysis/static_code_analysis.sh | 42 ++++++++++++++++++-- static-code-analysis.yml | 16 ++------ 2 files changed, 43 insertions(+), 15 deletions(-) diff --git a/docker/code-analysis/static_code_analysis.sh b/docker/code-analysis/static_code_analysis.sh index 44c069f..3f84005 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 36ecd82..b0f27b5 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" -- GitLab