find-dead-code

tarafından openshift

Kullanılmayan fonksiyonları, türleri, sabitleri, importları ve erişilemeyen kod yollarını bulur. Kullanıcı ölü kod, kullanılmayan kod, temizlik adayları veya… aramak istediğinde kullanın.

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

Find Dead Code

Detect unused Go code that can be safely removed.

Rules

  • Report findings, do not delete. Removal is a separate task.
  • Focus on production code (internal/, api/, cmd/). Skip tests unless explicitly asked.
  • Tools have false positives — classify each finding before recommending removal.
  • Code used via reflection or dynamic dispatch (e.g. Kubernetes controller-runtime, interface implementations) 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 codebase.

For branch mode:

git diff --name-only upstream/main -- 'internal/' 'api/' 'cmd/' | grep '\.go$' | grep -v '_test\.go$'

Step 2: Run Go Standard Tooling

Check for unused code with the compiler:

go build ./... 2>&1 | grep "declared and not used"
go vet ./... 2>&1 | grep -E "(not used|never used)"

Step 3: Run staticcheck

staticcheck detects unused code, including unexported functions, constants, and variables:

staticcheck -checks=U1000 ./...

U1000 reports unused code that is not exported and not referenced.

Step 4: Run deadcode (Go 1.23+)

If Go 1.23+ is available:

go run golang.org/x/tools/cmd/deadcode@latest -filter <package-pattern>

This finds functions, types, and variables that are never called or referenced.

Step 5: Check Unused Imports

goimports -l <target>

Any file listed has unused imports. Review with:

goimports -d <file>

Step 6: Filter False Positives

Common false positives in this codebase:

PatternWhy it's not dead
Reconcile(ctx, req) implementationsCalled by controller-runtime via interface
SetupWithManager() functionsCalled by manager setup code
init() functionsCalled automatically by Go runtime
Interface method implementationsCalled through interface, not directly
kubebuilder: marker functionsUsed by code generation
Constants/vars in constants.goMay be used in tests or future code
Error constants matching Err* patternMay be used in error wrapping

Step 7: Classify Findings

For each finding, classify:

CategoryCriteriaAction
RemoveClearly unused, no interface/reflection useSafe to delete
VerifyPossibly used dynamically or via interfaceSearch for references before removing
False positiveInterface impl, reflection, kubebuilder markerSkip

For "Verify" findings, search for references:

rg "<function_or_type_name>" internal/ api/ cmd/ test/

Step 8: Report

For each finding:

  1. File and line number
  2. What is unused (function, type, constant, variable, import)
  3. Tool that detected it (staticcheck, deadcode, goimports)
  4. Classification (remove / verify / false positive)
  5. Estimated lines saved

Summary: total findings, how many safe to remove, estimated cleanup size.

openshift tarafından daha fazla skill

openshift-docs
openshift
OpenShift Container Platform dokümantasyonunu markdown formatında arayın ve okuyun. Kullanıcı OpenShift özellikleri, yapılandırma, kurulum hakkında soru sorduğunda kullanın,…
triage-leaked-infra
openshift
HyperShift CI'den bir AWS VPC veya altyapı setinin silinmesinin güvenli olup olmadığını değerlendirir. Kullanıcı temiz sızdırılmış çıktıyı yapıştırıp 'bunu silebilir miyim?', 'bu…' diye sorduğunda kullanın.
openshift-expert
openshift
OpenShift platform ve Kubernetes uzmanı olup, küme mimarisi, operatörler, ağ oluşturma, depolama, sorun giderme ve CI/CD boru hatları konularında derin bilgiye sahiptir. Kullan…
Konflux Archived PipelineRuns
openshift
Arşivlenmiş Konflux PipelineRun, TaskRun ve pod loglarına KubeArchive üzerinden erişir. Konflux PipelineRun sonuçlarını kontrol ederken, araştırma yaparken otomatik olarak uygulanır…
backport
openshift
Ana daldan bir sürüm dalına commit veya PR'ları geri taşıyın. Kullanıcı backport, cherry-pick veya değişiklikleri dallar arasında taşıma istediğinde veya çözümleme yaparken kullanın.
rebase
openshift
Mevcut dalı temel dalına yeniden temelle, tüm çakışmaları çöz ve lint, i18n ve derlemenin geçtiğini doğrula. Kullanıcı yeniden temelleme, güncelleme veya senkronizasyon istediğinde kullan…
Build CPO Image
openshift
Kontrol düzlemi operatörü konteyner imajını derleyin ve gönderin. Canlı bir kümeye dağıtım gerektiren CPO değişikliklerini test ederken otomatik olarak uygulanır.
find-complexity
openshift
Yüksek döngüsel karmaşıklığa, aşırı uzunluğa veya çok fazla parametreye sahip fonksiyonları ve metotları bulur. Kullanıcı karmaşık kod, karmaşıklık bulmayı istediğinde kullanılır.