AgentSkillsCN

static-analysis

用于运维检查、安全扫描与代码质量的静态分析工具。在提交代码前使用,以发现同步问题;或在定期巡检中主动进行全盘审查。

SKILL.md
--- frontmatter
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

ScriptFormålNår bruke
check_drift.pySamlet drift-sjekkFør commit, etter større endringer
contract_drift.pyEnum/union synkEtter endring av event-typer
state_drift.pyState-modell synkEtter endring av state-strukturer
category_drift.pyKategori-synkEtter endring av NS 8407-kategorier
validation_drift.pyValidering-synkEtter endring av Zod/validators
constant_drift.pyHardkodede verdierVed mistanke om duplikater
label_coverage.pyLabel-dekningEtter nye enum-verdier
todo_tracker.pyTODO/FIXME-sporingJevnlig, før release
security_scan.pySikkerhetssårbarheterFør commit, før release
docs_drift.pyDokumentasjon vs kodeFør release, etter refaktorering
check_openapi_generator_drift.pyOpenAPI generator-synkEtter endring av enums/modeller
check_openapi_freshness.pyOpenAPI spec freshnessFør release

Eksterne verktøy (Backend)

VerktøyFormålInstallasjonBruk
vultureUbrukt Python-kodepip install vulturevulture backend/ --min-confidence 80 --exclude venv
pylintKodekvalitet + ubrukt kodepip install pylintpylint backend/ --disable=all --enable=unused-import,unused-variable
ruffRask linting (erstatter flake8)pip install ruffruff check backend/ --exclude venv --fix
banditSikkerhetsskanningpip install banditbandit -r backend/ -x venv --severity-level medium
pip-auditAvhengighets-sårbarheterpip install pip-auditpip-audit
pyrightType-sjekkingpip install pyrightpyright backend/

Eksterne verktøy (Frontend)

VerktøyFormålBruk
eslintLintingnpm run lint / npm run lint:fix
tscType-sjekkingnpx tsc --noEmit
npm auditAvhengighets-sårbarheternpm audit
depcheckUbrukte dependenciesnpx depcheck

Avanserte flagg

ScriptFlaggBeskrivelse
security_scan.py--include-lowInkluder low-severity funn (ekskludert som default)
contract_drift.py--verbose, -vVis hvilke unions/enums som ble funnet
state_drift.py--verbose, -vVis hvilke interfaces/models som ble funnet
category_drift.py--verbose, -vVis detaljer om kategorier
constant_drift.py--min NMinimum forekomster for å rapportere (default: 3)
docs_drift.py--verbose, -vVis alle funn inkludert info-nivå
check_openapi_generator_drift.py--verbose, -vVis detaljer om enums
vulture--min-confidence NMinimum 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:

  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

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:

  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