Statisk Analyse
Oversikt
Prosjektet har flere statiske analyse-verktøy i /scripts som hjelper med å oppdage drift, TODOs, sikkerhetsproblemer og andre potensielle feil.
Tilgjengelige verktøy
| Script | Formål | Når bruke |
|---|---|---|
check_drift.py | Samlet drift-sjekk | Før commit, etter større endringer |
contract_drift.py | Enum/union synk | Etter endring av event-typer |
state_drift.py | State-modell synk | Etter endring av state-strukturer |
category_drift.py | Kategori-synk | Etter endring av NS 8407-kategorier |
validation_drift.py | Validering-synk | Etter endring av Zod/validators |
constant_drift.py | Hardkodede verdier | Ved mistanke om duplikater |
label_coverage.py | Label-dekning | Etter nye enum-verdier |
todo_tracker.py | TODO/FIXME-sporing | Jevnlig, før release |
security_scan.py | Sikkerhetssårbarheter | Før commit, før release |
docs_drift.py | Dokumentasjon vs kode | Før release, etter refaktorering |
check_openapi_generator_drift.py | OpenAPI generator-synk | Etter endring av enums/modeller |
check_openapi_freshness.py | OpenAPI spec freshness | Før release |
Eksterne verktøy (Backend)
| Verktøy | Formål | Installasjon | Bruk |
|---|---|---|---|
vulture | Ubrukt Python-kode | pip install vulture | vulture backend/ --min-confidence 80 --exclude venv |
pylint | Kodekvalitet + ubrukt kode | pip install pylint | pylint backend/ --disable=all --enable=unused-import,unused-variable |
ruff | Rask linting (erstatter flake8) | pip install ruff | ruff check backend/ --exclude venv --fix |
bandit | Sikkerhetsskanning | pip install bandit | bandit -r backend/ -x venv --severity-level medium |
pip-audit | Avhengighets-sårbarheter | pip install pip-audit | pip-audit |
pyright | Type-sjekking | pip install pyright | pyright backend/ |
Eksterne verktøy (Frontend)
| Verktøy | Formål | Bruk |
|---|---|---|
eslint | Linting | npm run lint / npm run lint:fix |
tsc | Type-sjekking | npx tsc --noEmit |
npm audit | Avhengighets-sårbarheter | npm audit |
depcheck | Ubrukte dependencies | npx depcheck |
Avanserte flagg
| Script | Flagg | Beskrivelse |
|---|---|---|
security_scan.py | --include-low | Inkluder low-severity funn (ekskludert som default) |
contract_drift.py | --verbose, -v | Vis hvilke unions/enums som ble funnet |
state_drift.py | --verbose, -v | Vis hvilke interfaces/models som ble funnet |
category_drift.py | --verbose, -v | Vis detaljer om kategorier |
constant_drift.py | --min N | Minimum forekomster for å rapportere (default: 3) |
docs_drift.py | --verbose, -v | Vis alle funn inkludert info-nivå |
check_openapi_generator_drift.py | --verbose, -v | Vis detaljer om enums |
vulture | --min-confidence N | Minimum confidence (80 anbefalt) |
Bruksmønster
Standard output
bash
python scripts/todo_tracker.py python scripts/security_scan.py
JSON output (for videre prosessering)
bash
python scripts/check_drift.py --format json python scripts/todo_tracker.py --format json
CI-modus (exit 1 ved kritiske funn)
bash
python scripts/check_drift.py --ci python scripts/security_scan.py --ci python scripts/todo_tracker.py --ci --severity critical
Når kjøre hva
Før hver commit
bash
# Minimumsjekk python scripts/check_drift.py npm run lint
Etter endring av event-typer
bash
python scripts/contract_drift.py python scripts/label_coverage.py
Etter endring av state-modeller
bash
python scripts/state_drift.py
Etter endring av kategorier
bash
python scripts/category_drift.py
Etter endring av validering
bash
python scripts/validation_drift.py
Før PR / code review
bash
python scripts/check_drift.py python scripts/category_drift.py python scripts/validation_drift.py python scripts/docs_drift.py python scripts/todo_tracker.py python scripts/security_scan.py
Periodisk (ukentlig/sprint)
bash
python scripts/constant_drift.py # Finn dupliserte verdier python scripts/todo_tracker.py # Spor teknisk gjeld vulture backend/ --min-confidence 80 --exclude venv # Finn ubrukt kode pylint backend/ --exit-zero # Kodekvalitetsrapport
Full gjennomgang (månedlig eller ved større milepæler)
Kjør alle verktøy for å fange opp akkumulert teknisk gjeld:
bash
# Backend - Python vulture backend/ --min-confidence 80 --exclude venv ruff check backend/ --exclude venv --select F401,F541,F841,F821,E722 bandit -r backend/ -x venv --severity-level medium pip-audit # Frontend - TypeScript npm run lint npx tsc --noEmit npm audit npx depcheck # Prosjekt-spesifikke python scripts/check_drift.py python scripts/category_drift.py python scripts/validation_drift.py python scripts/docs_drift.py python scripts/security_scan.py
Viktige ruff-koder:
- •
F821- undefined name (potensielle bugs!) - •
E722- bare except (dårlig praksis) - •
F401- unused import - •
F541- f-string uten placeholders - •
F841- unused variable
Tips: Sett av tid til dette jevnlig. Små problemer akkumuleres over tid og blir vanskeligere å fikse senere.
Tolke output
check_drift.py
code
============================================================
DRIFT CHECK REPORT
============================================================
CONTRACT DRIFT (Enums/Unions)
----------------------------------------
OK - Ingen drift <- Alt synkronisert
STATE MODEL DRIFT (Interfaces/Models)
----------------------------------------
DRIFT FUNNET: 2 modeller <- Må fikses!
- SakState: 3 kritiske, 1 advarsler
- VederlagTilstand: 1 kritiske, 0 advarsler
Handling ved drift:
- •Kjør individuelt script for detaljer
- •Oppdater enten frontend eller backend for å matche
- •Kjør sjekk igjen for å verifisere
todo_tracker.py
code
TODO TRACKER REPORT
==================
CRITICAL (2):
backend/services/catenda_service.py:69
FIXME: Azure Service Bus mangler
backend/services/webhook_service.py:280
FIXME: Azure Service Bus integration needed
HIGH (3):
...
Severity-nivåer:
- •
CRITICAL- Må fikses før produksjon - •
HIGH- Bør fikses snart - •
MEDIUM- Planlegg å fikse - •
LOW- Nice to have
security_scan.py
code
SECURITY SCAN REPORT
====================
CRITICAL:
Math.random() for ID generation
src/api/forsering.ts:240
src/pages/OpprettSakPage.tsx:64
HIGH:
Sensitive data in localStorage
src/context/UserRoleContext.tsx:75
Handling:
- •
CRITICAL- Fiks umiddelbart - •
HIGH- Fiks før produksjon - •
MEDIUM- Vurder risiko
CI/CD Integrasjon
Anbefalt GitHub Actions workflow:
yaml
name: Static Analysis
on: [push, pull_request]
jobs:
analysis:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-python@v5
with:
python-version: '3.11'
- name: Drift Check
run: python scripts/check_drift.py --ci
- name: Security Scan
run: python scripts/security_scan.py --ci
- name: TODO Check (warn only)
run: python scripts/todo_tracker.py --severity critical
continue-on-error: true
Legge til nye sjekker
Alle scripts følger samme mønster:
- •
--formatparameter (text/json/markdown) - •
--ciparameter for exit code 1 ved kritiske funn - •Finner prosjektrot via
package.json - •Hopper over
node_modules,.git,dist, etc.
Se eksisterende scripts for template.
Kjente begrensninger
- •Scripts er Python-baserte, krever Python 3.11+
- •Noen sjekker er regex-baserte og kan gi false positives
- •
state_drift.pysammenligner kun navnede felt, ikke logikk