Add CodeChecker static analysis workflow to LOGAR
This commit is contained in:
@@ -0,0 +1,73 @@
|
|||||||
|
name: CodeChecker Static Analysis
|
||||||
|
|
||||||
|
on:
|
||||||
|
push:
|
||||||
|
branches:
|
||||||
|
- main
|
||||||
|
- '**'
|
||||||
|
pull_request:
|
||||||
|
workflow_dispatch:
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
codechecker:
|
||||||
|
name: CodeChecker Static Analysis & Upload
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
- name: Checkout Repository
|
||||||
|
uses: actions/checkout@v4
|
||||||
|
|
||||||
|
- name: Set up Python Environment & Linters
|
||||||
|
run: |
|
||||||
|
python3 -m venv .venv
|
||||||
|
. .venv/bin/activate
|
||||||
|
python3 -m pip install --upgrade pip
|
||||||
|
pip3 install codechecker pylint flake8
|
||||||
|
pip3 install -r compilation/requirements.txt || true
|
||||||
|
|
||||||
|
- name: Run Static Analyzers
|
||||||
|
run: |
|
||||||
|
. .venv/bin/activate
|
||||||
|
mkdir -p ./reports_raw ./cc_reports
|
||||||
|
echo "[*] Running Pylint analysis across LOGAR codebase..."
|
||||||
|
pylint src compilation tests --output-format=json > ./reports_raw/pylint.json || true
|
||||||
|
echo "[*] Running Flake8 analysis across LOGAR codebase..."
|
||||||
|
flake8 src compilation tests --format=default > ./reports_raw/flake8.txt || true
|
||||||
|
|
||||||
|
- name: Convert Reports to CodeChecker Format
|
||||||
|
run: |
|
||||||
|
. .venv/bin/activate
|
||||||
|
if [ -s ./reports_raw/pylint.json ]; then
|
||||||
|
report-converter -t pylint -o ./cc_reports ./reports_raw/pylint.json || true
|
||||||
|
fi
|
||||||
|
if [ -s ./reports_raw/flake8.txt ]; then
|
||||||
|
report-converter -t flake8 -o ./cc_reports ./reports_raw/flake8.txt || true
|
||||||
|
fi
|
||||||
|
|
||||||
|
- name: Configure CodeChecker Authentication & Store Results
|
||||||
|
env:
|
||||||
|
CC_TOKEN: ${{ secrets.CODECHECKER_TOKEN || 'b97dc4d121e3d3b7e9cb4fa4e07ff7a9' }}
|
||||||
|
CC_USER: "GITEA"
|
||||||
|
CC_SERVER: "https://codechecker.eibl.tech/Default"
|
||||||
|
run: |
|
||||||
|
. .venv/bin/activate
|
||||||
|
mkdir -p ~/.codechecker
|
||||||
|
cat << EOF > ~/.codechecker.passwords.json
|
||||||
|
{
|
||||||
|
"client_autologin": true,
|
||||||
|
"credentials": {
|
||||||
|
"codechecker.eibl.tech": "${CC_USER}:${CC_TOKEN}",
|
||||||
|
"codechecker.eibl.tech:443": "${CC_USER}:${CC_TOKEN}",
|
||||||
|
"*": "${CC_USER}:${CC_TOKEN}"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
EOF
|
||||||
|
chmod 600 ~/.codechecker.passwords.json
|
||||||
|
|
||||||
|
RUN_NAME="LOGAR_${GITHUB_REF_NAME:-main}"
|
||||||
|
echo "[*] Storing CodeChecker reports to ${CC_SERVER} under run '${RUN_NAME}'..."
|
||||||
|
CodeChecker store ./cc_reports \
|
||||||
|
--name "$RUN_NAME" \
|
||||||
|
--tag "${GITHUB_SHA}" \
|
||||||
|
--url "$CC_SERVER" || echo "[!] CodeChecker store warning"
|
||||||
|
|
||||||
|
echo "[+] CodeChecker analysis complete. View reports at https://codechecker.eibl.tech"
|
||||||
Reference in New Issue
Block a user