Mengapa
Follow-up dari issue #220 (fixed PR #227 — same-file-usage tracking untuk 7 bahasa). Setelah fix #220 diverifikasi terhadap Rust project real (rekening-dev-mode), registry_dead masih tetap 100 findings walau RED (kasus asli #220) sudah tidak lagi muncul.
Analisis findings yang tersisa: 38 dari 100 (38%) adalah item struktural yang bukan "callable entity" dalam pengertian normal:
- 10 findings adalah nama module Rust (
mod tests { ... }) — module bukan dipanggil, tapi di-reference via path
- 23 findings adalah impl block (nama sintetis seperti
AppHandle::impl_AppHandle)
- 5 findings adalah trait method default (
impl Default for EomConfig { fn default() ... }) — method default() sering dipanggil implisit via Default::default() generic call atau ..Default::default() struct update syntax, bukan EomConfig::default() literal
Verifikasi ground truth: impl Default for EomConfig ada di src/types.rs:147, tapi grep untuk EomConfig::default() eksplisit tidak ditemukan — kemungkinan dipanggil via trait mechanism generik yang regex-based detection tidak bisa tangkap.
Konteks
Ini kelas false positive BERBEDA dari #220 (yang soal simple const/fn same-file usage). Ini soal registry Rust yang salah mendaftarkan module declaration dan impl block sebagai "callable" node yang bisa di-flag dead — padahal keduanya bukan invocation target dalam arti normal.
Tujuan
- Module (
mod X { ... }) TIDAK BOLEH masuk kategori dead-code check sama sekali — module adalah namespace, bukan callable
- Impl block itu sendiri (bukan method di dalamnya) TIDAK BOLEH di-flag dead — impl block "hidup" selama ada minimal 1 method di dalamnya yang dipakai
- Trait method seperti
default(), clone(), fmt(), dll (trait standar Rust yang biasa dipanggil implisit) butuh whitelist atau heuristik khusus — false positive rate untuk trait method jauh lebih tinggi dari fungsi biasa
Constraint
- Investigasi dulu di mana
AppHandle::impl_AppHandle-style node terdaftar (kemungkinan di parser Rust atau graph_model registry building) sebelum putuskan fix
- Jangan buang deteksi genuine dead-code Rust yang valid — filter harus presisi ke pattern module/impl-block/trait-default, bukan exempt semua node bernama aneh
Definition of Done
mod tests, mod integration, dll — module declarations tidak lagi muncul di registry_dead
- Impl block (pattern
X::impl_X) tidak lagi muncul sebagai finding terpisah — method di dalamnya yang di-cek individual, bukan impl block sebagai whole
- Trait method umum (
default, clone, fmt, drop, eq, hash, dll) dapat whitelist atau confidence lebih rendah
- Re-run dead-code di rekening-dev-mode — registry_dead count turun signifikan lagi dari 100
Checklist Laporan Worker
Mengapa
Follow-up dari issue #220 (fixed PR #227 — same-file-usage tracking untuk 7 bahasa). Setelah fix #220 diverifikasi terhadap Rust project real (rekening-dev-mode),
registry_deadmasih tetap 100 findings walauRED(kasus asli #220) sudah tidak lagi muncul.Analisis findings yang tersisa: 38 dari 100 (38%) adalah item struktural yang bukan "callable entity" dalam pengertian normal:
mod tests { ... }) — module bukan dipanggil, tapi di-reference via pathAppHandle::impl_AppHandle)impl Default for EomConfig { fn default() ... }) — methoddefault()sering dipanggil implisit viaDefault::default()generic call atau..Default::default()struct update syntax, bukanEomConfig::default()literalVerifikasi ground truth:
impl Default for EomConfigada disrc/types.rs:147, tapi grep untukEomConfig::default()eksplisit tidak ditemukan — kemungkinan dipanggil via trait mechanism generik yang regex-based detection tidak bisa tangkap.Konteks
Ini kelas false positive BERBEDA dari #220 (yang soal simple const/fn same-file usage). Ini soal registry Rust yang salah mendaftarkan module declaration dan impl block sebagai "callable" node yang bisa di-flag dead — padahal keduanya bukan invocation target dalam arti normal.
Tujuan
mod X { ... }) TIDAK BOLEH masuk kategori dead-code check sama sekali — module adalah namespace, bukan callabledefault(),clone(),fmt(), dll (trait standar Rust yang biasa dipanggil implisit) butuh whitelist atau heuristik khusus — false positive rate untuk trait method jauh lebih tinggi dari fungsi biasaConstraint
AppHandle::impl_AppHandle-style node terdaftar (kemungkinan di parser Rust atau graph_model registry building) sebelum putuskan fixDefinition of Done
mod tests,mod integration, dll — module declarations tidak lagi muncul diregistry_deadX::impl_X) tidak lagi muncul sebagai finding terpisah — method di dalamnya yang di-cek individual, bukan impl block sebagai wholedefault,clone,fmt,drop,eq,hash, dll) dapat whitelist atau confidence lebih rendahChecklist Laporan Worker