find-dead-code

作成者: openshift

未使用の関数、クラス、インポート、到達不能なコードパスを検出します。ユーザーがデッドコード、未使用コード、クリーンアップ候補の検出を依頼した場合、または…したい場合に使用します。

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.

openshiftのその他のスキル

openshift-docs
openshift
OpenShift Container Platformのドキュメントをマークダウン形式で検索および閲覧します。ユーザーがOpenShiftの機能、設定、インストールなどについて質問する場合に使用します。
triage-leaked-infra
openshift
AWS VPCまたはHyperShift CIからのインフラセットが削除しても安全かどうかを評価します。ユーザーがcleanleakedの出力を貼り付け、「これは削除できますか?」「これは…」と尋ねたときに使用します。
openshift-expert
openshift
OpenShiftプラットフォームとKubernetesのエキスパートであり、クラスターアーキテクチャ、オペレーター、ネットワーキング、ストレージ、トラブルシューティング、CI/CDパイプラインに関する深い知識を持つ。使用…
Konflux Archived PipelineRuns
openshift
アーカイブされたKonflux PipelineRun、TaskRun、およびポッドログにKubeArchive経由でアクセスします。Konflux PipelineRunの結果を確認する際や調査時に自動適用されます。
backport
openshift
メインからリリースブランチへのコミットやPRをバックポートします。ユーザーがバックポート、チェリーピック、ブランチ間の変更の移植を依頼した場合、または解決中に使用します。
rebase
openshift
現在のブランチをベースブランチにリベースし、すべてのコンフリクトを解決して、lint、i18n、ビルドが通ることを確認します。ユーザーがリベース、更新、同期を依頼した場合に使用します…
Build CPO Image
openshift
コントロールプレーンオペレーターのコンテナイメージをビルドしてプッシュします。CPOの変更をライブクラスターにデプロイしてテストする際に自動適用されます。
find-complexity
openshift
サイクロマティック複雑度が高い、長すぎる、またはパラメータが多すぎる関数やメソッドを見つけます。ユーザーが複雑なコードや複雑性を探すよう依頼した場合に使用します。