name: 'CodeChecker Static Analysis' author: 'Whisperity' description: 'Execute C/C++ static analysis of LLVM/Clang (Clang Static Analyzer and Clang-Tidy) driven via CodeChecker.' inputs: repository: description: 'The CodeChecker repository to check out and build from.' required: true default: 'Ericsson/CodeChecker' version: description: 'The version of the CodeChecker suite to obtain and execute. Might be a Git commit SHA, a branch name, or a tag.' required: true default: 'master' runs: using: "composite" steps: - name: "Check out repository ${{ inputs.repository }}" uses: actions/checkout@v2 with: repository: ${{ inputs.repository }} path: CodeChecker ref: ${{ inputs.version }} - name: "Install dependencies of CodeChecker" shell: bash run: | sudo apt-get -qy update sudo apt-get -y --no-install-recommends install \ build-essential \ curl \ gcc-multilib \ python3-dev \ python3-venv - name: "Build and Package CodeChecker" id: codechecker_build env: CODECHECKER_WILL_USE_WEB_API: false shell: bash run: | if [[ "$CODECHECKER_WILL_USE_WEB_API" == "false" ]]; then # If the job is only running analysis, do not spend time with building the API stuff! echo "Building only 'analyzer' module..." pushd CodeChecker/analyzer else echo "Building full CodeChecker package..." pushd CodeChecker fi make venv source venv/bin/activate BUILD_UI_DIST=NO make standalone_package deactivate ./build/CodeChecker/bin/CodeChecker analyzer-version if [[ "$CODECHECKER_WILL_USE_WEB_API" == "true" ]]; then ./build/CodeChecker/bin/CodeChecker web-version else echo "CodeChecker 'web' package not built." fi echo "::set-output name=CODECHECKER_PATH::$(readlink -f ./build/CodeChecker/bin)" echo "::set-output name=CODECHECKER_VERSION::$(./build/CodeChecker/bin/CodeChecker analyzer-version | grep 'Base package' | cut -d'|' -f 2 | tr -d ' ')" echo "::set-output name=CODECHECKER_GITSEVEN::$(./build/CodeChecker/bin/CodeChecker analyzer-version | grep 'Git commit' | cut -d'|' -f 2 | cut -c 2-8)" popd