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

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions