Toolverse
Wszystkie skille

minimize-rust-ffi-crate-surface

autor: RediSearch

Usuń nieużywane symbole C z Rust FFI – czyszczenie interfejsu podczas refaktoryzacji

Instalacja

Wybierz klienta i sklonuj repozytorium do odpowiedniego katalogu skilli.

Instalacja

Szybkie info

Kategoria
Testowanie

O skillu

Skill do czyszczenia powierzchni Rust FFI crate'ów poprzez identyfikację i usunięcie symboli C, które nie są wykorzystywane lub służą wyłącznie testom jednostkowym. Przydatny podczas refaktoryzacji kodu – automatycznie analizuje definicje extern "C" i pomaga zdecydować, które symbole można bezpiecznie usunąć, a które pełnią tylko rolę testową.

Jak używać

  1. Przygotuj ścieżkę do Rust crate'u lub pliku, który chcesz wyczyścić. Jeśli ścieżka nie zaczyna się od src/, zostanie automatycznie rozszerzana do src/redisearch_rs/c_entrypoint/. Na przykład numeric_range_tree_ffi zostanie zmieniony na src/redisearch_rs/numeric_range_tree_ffi. Możesz podać jedną ścieżkę lub wiele plików/katalogów naraz.

  2. Uruchom skill z podaną ścieżką. Skill wykorzysta narzędzie analyze-rust-ffi-crate-surface do przeskanowania wszystkich symboli FFI (funkcji extern "C" z atrybutem #[unsafe(no_mangle)] oraz definicji typów) i określenia, które z nich są faktycznie używane.

  3. Dla każdego symbolu oznaczonego jako nieużywany: usuń jego definicję z kodu Rust, a następnie uruchom testy jednostkowe C/C++ poleceniem ./build.sh RUN_UNIT_TESTS, aby potwierdzić, że symbol rzeczywiście nie był potrzebny.

  4. Dla symboli, które są używane wyłącznie w testach C/C++, opracuj plan działania. Możesz wybrać jedną z trzech opcji: refaktoryzuj testy, aby nie korzystały z symbolu; usuń testy lub asercje, które polegają na szczegółach implementacji; lub zachowaj symbol, ale oznacz go jako "test only".

  5. Zastosuj wybrane zmiany w kodzie i ponownie uruchom pełny zestaw testów, aby upewnić się, że refaktoryzacja nie spowodowała regresji.

  6. Zweryfikuj, że publiczny interfejs FFI jest teraz czystszy i zawiera tylko symbole rzeczywiście potrzebne dla produkcji.

Podobne skille