find-dead-code

Finde ungenutzte Funktionen, Klassen, Importe und unerreichbare Codepfade. Verwende dies, wenn der Benutzer darum bittet, toten Code, ungenutzten Code, Bereinigungskandidaten zu finden oder…

npx skills add https://github.com/openshift/lightspeed-service --skill find-dead-code

Find Dead Code

Detect unused code that can be safely removed.

Rules

  • Report findings, do not delete. Removal is a separate task.
  • Focus on production code (ols/). Skip tests unless explicitly asked.
  • Vulture has false positives — classify each finding before recommending removal.
  • Code used only via dynamic dispatch (e.g. Pydantic validators, FastAPI dependencies) is not dead.

Step 1: Determine Scope

Ask the user:

  • Branch mode: only files changed in the current branch vs main.
  • Full mode: scan the entire ols/ directory.

For branch mode:

git diff --name-only origin/main -- 'ols/' | grep '\.py$'

Step 2: Run Vulture

uvx vulture <target> --min-confidence 80

--min-confidence 80 reduces noise. Lower confidence findings are more likely false positives.

Step 3: Run Pylint Unused Checks

uv run pylint --disable=all --enable=unused-import,unused-variable,unused-argument,unreachable <target>

Cross-reference with vulture findings to increase confidence.

Step 4: Filter False Positives

Common false positives in this codebase:

PatternWhy it's not dead
Pydantic model_validator, field_validatorCalled by Pydantic, not directly
FastAPI dependency functionsInjected via Depends()
__eq__, __hash__, __str__Called implicitly by Python
Constants used in config YAMLReferenced by config loader
Abstract method implementationsCalled via base class interface
Imports re-exported from __init__.pyUsed by external consumers

Step 5: Classify Findings

For each finding, classify:

CategoryCriteriaAction
RemoveClearly unused, no dynamic referencesSafe to delete
VerifyPossibly used dynamically or externallySearch for string references before removing
False positivePydantic/FastAPI/magic methodSkip

For "Verify" findings, search for string-based references:

rg "<function_or_class_name>" ols/ tests/

Step 6: Report

For each finding:

  1. File and line number
  2. What is unused (function, class, import, variable)
  3. Confidence level (vulture %)
  4. Classification (remove / verify / false positive)

Summary: total findings, how many safe to remove, estimated lines saved.

Mehr Skills von openshift

openshift-docs
openshift
Durchsuchen und Lesen der OpenShift Container Platform-Dokumentation im Markdown-Format. Verwenden, wenn der Benutzer nach OpenShift-Funktionen, Konfiguration, Installation, … fragt.
triage-leaked-infra
openshift
Bewerten Sie, ob eine AWS-VPC oder eine Infrastruktur aus HyperShift CI sicher gelöscht werden kann. Verwenden Sie dies, wenn der Benutzer eine saubere geleakte Ausgabe einfügt und fragt: „Kann ich das löschen?“, „Ist…
openshift-expert
openshift
OpenShift-Plattform- und Kubernetes-Experte mit fundierten Kenntnissen in Cluster-Architektur, Operatoren, Netzwerk, Speicher, Fehlerbehebung und CI/CD-Pipelines. Nutzen…
Konflux Archived PipelineRuns
openshift
Greift auf archivierte Konflux PipelineRuns, TaskRuns und Pod-Logs über KubeArchive zu. Wird automatisch angewendet, wenn Konflux PipelineRun-Ergebnisse überprüft, untersucht…
backport
openshift
Commits oder PRs vom Hauptzweig in einen Release-Zweig zurückportieren. Verwenden, wenn der Benutzer darum bittet, Änderungen zwischen Zweigen zurückzuportieren, zu cherry-picken oder zu portieren, oder beim Beheben von…
rebase
openshift
Rebase den aktuellen Branch auf seinen Basis-Branch, löse alle Konflikte und stelle sicher, dass Lint, i18n und Build erfolgreich durchlaufen. Verwende dies, wenn der Benutzer darum bittet, zu rebasen, zu aktualisieren oder zu synchronisieren…
Build CPO Image
openshift
Erstellen und Pushen des control-plane-operator-Container-Images. Wird automatisch angewendet, wenn CPO-Änderungen getestet werden, die ein Deployment auf einem Live-Cluster erfordern.
find-complexity
openshift
Findet Funktionen und Methoden mit hoher zyklomatischer Komplexität, übermäßiger Länge oder zu vielen Parametern. Verwenden, wenn der Benutzer bittet, komplexen Code, Komplexität zu finden…