Static Analysis

by khjohns

skill

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 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

============================================================
  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:

  1. Kjør individuelt script for detaljer
  2. Oppdater enten frontend eller backend for å matche
  3. 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 produksjon
  • HIGH - Bør fikses snart
  • MEDIUM - Planlegg å fikse
  • LOW - 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 umiddelbart
  • HIGH - Fiks før produksjon
  • MEDIUM - 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:

  1. --format parameter (text/json/markdown)
  2. --ci parameter for exit code 1 ved kritiske funn
  3. Finner prosjektrot via package.json
  4. 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.py sammenligner 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.

skill

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.

skill

Matplotlib

Foundational plotting library. Create line plots, scatter, bar, histograms, heatmaps, 3D, subplots, export PNG/PDF/SVG, for scientific visualization and publication figures.

skill

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.

skill

Seaborn

Statistical visualization. Scatter, box, violin, heatmaps, pair plots, regression, correlation matrices, KDE, faceted plots, for exploratory analysis and publication figures.

skill

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

skill

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.

skill

Query Writing

For writing and executing SQL queries - from simple single-table queries to complex multi-table JOINs and aggregations

skill

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.

skill

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.

skill

Skill Information

Category:Skill
Allowed Tools:Bash, Read, Grep
Last Updated:1/29/2026