diff --git a/.github/workflows/code-quality.yml b/.github/workflows/code-quality.yml index 6eeeb32..626995a 100644 --- a/.github/workflows/code-quality.yml +++ b/.github/workflows/code-quality.yml @@ -21,12 +21,16 @@ jobs: cache: 'pip' - name: Pull Git LFS objects - run: git lfs pull + run: | + git lfs install + git config --global core.hookspath .git/hooks + git lfs update --force + git lfs pull - name: Install dependencies run: | python -m pip install --upgrade pip - pip install ruff mypy pydantic vulture radon + pip install ruff mypy pydantic vulture radon bandit openenv-core pip install -e ".[dev,demo]" - name: Lint and Format with Ruff @@ -38,6 +42,10 @@ jobs: run: | mypy . + - name: Bandit SAST + run: | + bandit -r . -c pyproject.toml + - name: Dead Code Detection with Vulture run: | vulture . --min-confidence 80 --exclude .venv,venv,.cursor,web/node_modules @@ -49,7 +57,11 @@ jobs: - name: Pytest validation run: | - python -m pytest tests/ -q --tb=line + PYTHONPATH=. python -m pytest tests/ -q --tb=line + + - name: OpenEnv Validate + run: | + openenv validate . frontend-quality: runs-on: ubuntu-latest @@ -87,7 +99,7 @@ jobs: node-version: '24' - name: Install jscpd - run: npm install -g jscpd + run: npm install -g jscpd@4.0.0 - name: Check for duplicate code - run: jscpd . --ignore "**/*.json,**/*.md,**/*.yaml,**/*.yml,**/package-lock.json,**/node_modules/**,**/venv/**,**/.venv/**" --threshold 5 + run: jscpd . --ignore "**/*.json,**/*.md,**/*.yaml,**/*.yml,**/package-lock.json,**/node_modules/**,**/venv/**,**/.venv/**,**/dist/**,**/build/**" --threshold 5