name: 'CodeChecker Static Analysis' author: 'Whisperity' description: 'Execute C/C++ static analysis of LLVM/Clang (Clang Static Analyzer and Clang-Tidy) driven via CodeChecker.' branding: icon: 'tool' color: 'blue' 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' llvm-version: description: 'The major version of LLVM to install and use. LLVM is installed from PPA. If "latest", automatically gather the latest version. If "ignore", do not install anything. (Not recommended)' required: true default: 'latest' 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 ${{ github.action_path }}/src/apt-dependencies.sh - name: "Install LLVM version" id: llvm if: ${{ inputs.llvm-version != 'ignore' }} env: CONFIGURED_LLVM_VERSION: ${{ inputs.llvm-version }} shell: bash run: | ${{ github.action_path }}/src/get-llvm.sh echo "::set-output name=REAL_VERSION::$(clang --version | head -n 1 | cut -d' ' -f4-)" - name: "Build and Package CodeChecker" id: codechecker env: CODECHECKER_WILL_USE_WEB_API: false # TODO: Add support for this later. shell: bash run: | set -ex 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=PATH::$(readlink -f ./build/CodeChecker/bin)" echo "::set-output name=VERSION::$(./build/CodeChecker/bin/CodeChecker analyzer-version | grep 'Base package' | cut -d'|' -f 2 | tr -d ' ')" echo "::set-output name=GITSEVEN::$(./build/CodeChecker/bin/CodeChecker analyzer-version | grep 'Git commit' | cut -d'|' -f 2 | cut -c 2-8)" popd