Skip to content

fix(dead-code): Rust module/impl-block/trait-default false-flagged as dead #228

Description

@Wolfvin

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

  1. Module (mod X { ... }) TIDAK BOLEH masuk kategori dead-code check sama sekali — module adalah namespace, bukan callable
  2. 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
  3. 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

  1. mod tests, mod integration, dll — module declarations tidak lagi muncul di registry_dead
  2. Impl block (pattern X::impl_X) tidak lagi muncul sebagai finding terpisah — method di dalamnya yang di-cek individual, bukan impl block sebagai whole
  3. Trait method umum (default, clone, fmt, drop, eq, hash, dll) dapat whitelist atau confidence lebih rendah
  4. Re-run dead-code di rekening-dev-mode — registry_dead count turun signifikan lagi dari 100

Checklist Laporan Worker

  • Root cause: di mana module/impl-block terdaftar sebagai node checkable
  • Before/after registry_dead count di rekening-dev-mode
  • Sample sisa findings setelah fix — verifikasi manual genuine dead code
  • Hasil test suite lengkap

Metadata

Metadata

Assignees

No one assigned

    Labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions