Static Analysis
by khjohns
Statiske analyseverktøy for drift-sjekk, sikkerhetsscan og kodekvalitet. Bruk før commit, for å finne synkroniseringsproblemer, eller proaktivt ved jevne mellomrom for full gjennomgang.
Skill Details
Repository Files
1 file in this skill directory
name: static-analysis description: Statiske analyseverktøy for drift-sjekk, sikkerhetsscan og kodekvalitet. Bruk før commit, for å finne synkroniseringsproblemer, eller proaktivt ved jevne mellomrom for full gjennomgang. allowed-tools: Bash, Read, Grep
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
python scripts/todo_tracker.py
python scripts/security_scan.py
JSON output (for videre prosessering)
python scripts/check_drift.py --format json
python scripts/todo_tracker.py --format json
CI-modus (exit 1 ved kritiske funn)
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
# Minimumsjekk
python scripts/check_drift.py
npm run lint
Etter endring av event-typer
python scripts/contract_drift.py
python scripts/label_coverage.py
Etter endring av state-modeller
python scripts/state_drift.py
Etter endring av kategorier
python scripts/category_drift.py
Etter endring av validering
python scripts/validation_drift.py
Før PR / code review
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)
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:
# 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 importF541- f-string uten placeholdersF841- unused variable
Tips: Sett av tid til dette jevnlig. Små problemer akkumuleres over tid og blir vanskeligere å fikse senere.
Tolke output
check_drift.py
============================================================
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
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 produksjonHIGH- Bør fikses snartMEDIUM- Planlegg å fikseLOW- Nice to have
security_scan.py
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 umiddelbartHIGH- Fiks før produksjonMEDIUM- Vurder risiko
CI/CD Integrasjon
Anbefalt GitHub Actions workflow:
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
Related Skills
Attack Tree Construction
Build comprehensive attack trees to visualize threat paths. Use when mapping attack scenarios, identifying defense gaps, or communicating security risks to stakeholders.
Grafana Dashboards
Create and manage production Grafana dashboards for real-time visualization of system and application metrics. Use when building monitoring dashboards, visualizing metrics, or creating operational observability interfaces.
Matplotlib
Foundational plotting library. Create line plots, scatter, bar, histograms, heatmaps, 3D, subplots, export PNG/PDF/SVG, for scientific visualization and publication figures.
Scientific Visualization
Create publication figures with matplotlib/seaborn/plotly. Multi-panel layouts, error bars, significance markers, colorblind-safe, export PDF/EPS/TIFF, for journal-ready scientific plots.
Seaborn
Statistical visualization. Scatter, box, violin, heatmaps, pair plots, regression, correlation matrices, KDE, faceted plots, for exploratory analysis and publication figures.
Shap
Model interpretability and explainability using SHAP (SHapley Additive exPlanations). Use this skill when explaining machine learning model predictions, computing feature importance, generating SHAP plots (waterfall, beeswarm, bar, scatter, force, heatmap), debugging models, analyzing model bias or fairness, comparing models, or implementing explainable AI. Works with tree-based models (XGBoost, LightGBM, Random Forest), deep learning (TensorFlow, PyTorch), linear models, and any black-box model
Pydeseq2
Differential gene expression analysis (Python DESeq2). Identify DE genes from bulk RNA-seq counts, Wald tests, FDR correction, volcano/MA plots, for RNA-seq analysis.
Query Writing
For writing and executing SQL queries - from simple single-table queries to complex multi-table JOINs and aggregations
Pydeseq2
Differential gene expression analysis (Python DESeq2). Identify DE genes from bulk RNA-seq counts, Wald tests, FDR correction, volcano/MA plots, for RNA-seq analysis.
Scientific Visualization
Meta-skill for publication-ready figures. Use when creating journal submission figures requiring multi-panel layouts, significance annotations, error bars, colorblind-safe palettes, and specific journal formatting (Nature, Science, Cell). Orchestrates matplotlib/seaborn/plotly with publication styles. For quick exploration use seaborn or plotly directly.
