find-duplication

Temukan duplikasi kode dalam basis kode. Mendukung dua mode - terbatas pada perubahan cabang saat ini atau pemindaian seluruh basis kode. Gunakan saat pengguna meminta untuk menemukan…

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

Find Code Duplication

Detect duplicated or near-duplicate code and suggest consolidation candidates.

Rules

  • Report findings, do not refactor. Refactoring is a separate task.
  • Focus on production code (ols/). Skip test duplication unless explicitly asked.
  • Group findings by severity: exact duplicates first, then near-duplicates.
  • For each finding, state whether extraction is worth it or acceptable duplication.

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

For full mode, the target is ols/.

Step 2: Run Pylint Duplicate Detection

uv run pylint --disable=all --enable=duplicate-code --min-similarity-lines=6 <target files or directory>

Review output. Filter out false positives:

  • Import blocks (common imports are not duplication)
  • Pydantic model boilerplate (Field declarations)
  • Single-line patterns (logging, raises)

Step 3: Semantic Duplication Search

Pylint only catches textual similarity. Also look for:

  1. Similar function signatures — functions with near-identical parameter lists doing similar work.
  2. Repeated error handling — same try/except/log/return pattern across multiple files.
  3. Copy-pasted blocks — search for distinctive string literals or variable names that appear in multiple files.
rg "<distinctive pattern>" ols/ --type py -l

Step 4: Classify Findings

For each duplicate found, classify:

CategoryAction
Extract — identical logic in 3+ placesRecommend a shared helper
Parameterize — same structure, different valuesRecommend a common function with parameters
Acceptable — similar but serving different domainsNote it, no action needed
Test-only — repeated test setup/fixturesRecommend shared fixture (only if user asked)

Step 5: Report

For each finding:

  1. Files and line ranges involved
  2. What is duplicated (brief description)
  3. Classification (extract / parameterize / acceptable)
  4. Suggested location for shared code (if applicable)

Summary: total findings, how many actionable, estimated lines saved.

Lebih banyak skill dari openshift

openshift-expert
openshift
Pakar platform OpenShift dan Kubernetes dengan pengetahuan mendalam tentang arsitektur klaster, operator, jaringan, penyimpanan, pemecahan masalah, dan pipeline CI/CD. Gunakan…
official
find-token
openshift
Temukan token verifikasi yang tersembunyi. Jalankan skrip find-token untuk mengambil token unik.
official
code-review
openshift
Tinjau permintaan pull untuk kualitas kode, kebenaran, dan konvensi proyek. Gunakan saat pengguna meminta untuk meninjau PR, tinjauan kode, atau memeriksa perubahan pada suatu…
official
css-review
openshift
Tinjau CSS untuk gaya penulisan kode, penggunaan token PatternFly, dan praktik terbaik. Gunakan saat pengguna meminta untuk meninjau CSS, memeriksa gaya, atau mengaudit file CSS.
official
review-readmes
openshift
Tinjau semua file README.md di repositori untuk mencari kesalahan ketik, kesalahan, dan informasi yang sudah usang. Gunakan saat pengguna meminta untuk meninjau README, memeriksa keakuratan dokumentasi, atau…
official
review-skills
openshift
Tinjau keterampilan AI proyek untuk duplikasi, referensi usang, kesalahan, dan masalah struktural. Gunakan saat pengguna meminta untuk meninjau keterampilan, mengaudit keterampilan, memeriksa…
official
test
openshift
Jalankan pengujian ujung-ke-ujung yang difilter berdasarkan tag. Gunakan saat pengguna meminta untuk menjalankan pengujian, menjalankan Playwright, atau menguji tag fitur tertentu seperti @core atau @attach.
official
unused-exports
openshift
Temukan simbol yang diekspor tetapi tidak pernah diimpor oleh file lain. Gunakan saat pengguna mengatakan "periksa ekspor", "ekspor tidak terpakai" atau meminta untuk membersihkan ekspor.
official