2016-03-09 16 views
12

Piszę plugin Scala dla edytora używam które podkreślają wszystkie nieużywane ścieżki kodu (może być nieużywany defs, vals, classes i implicits) i dać możliwość ich szarpać użytkownikowi z pliku .scala.narzędzie Scala, aby usunąć wszystkie nieużywane kodu

Jak mogę to zrobić? Aby uprościć problem, udawajmy, że mamy pojedynczy plik pojedynczego na poziomie root .scala bez zewnętrznej zależności od bibliotek lub innych plików kodu.

Idealnie chciałbym, aby była to wtyczka SBT, która, biorąc pod uwagę jeden taki plik Foo.scala, wyplułaby plik Foo_min.Scala z usuniętym wszystkimi nieużywanymi kodami.

+2

Najbliżej co wiem jest użycie '-Ywarn-unused' i' -Ywarn-nieużywany-import' jako opcje sbt. –

+0

Możliwy duplikat [Czy istnieje narzędzie Scala do czyszczenia wszystkich nieużywanych importów ze wszystkich plików kodu?] (Https://stackoverflow.com/questions/7767567/is-there-a-tool-for-scala-to -clean-all-the-used import-from-all-the-code-file) –

Odpowiedz

4

Potrzebujesz jakiegoś semantycznego API do przechodzenia przez kod i zadawania pytań typu "czy ta zmienna/import jest kiedykolwiek używany"?

Z tego, co wiem, Intellij używa Meta programming System do osiągnięcia tych samych celów. Dla scala możesz poczekać na wydanie 2.02., które (najprawdopodobniej) będzie obsługiwać semantyczny API.

0

Po prostu szukasz numeru callgraph.

Kompletny, ale złożony kaligraf dla kodu Scala jest zaimplementowany w Dotty Linker. To jest najnowocześniejsze. Jednak nawet budowanie łatwiejszego kaligrafa nie jest banalnym zadaniem. Nie zdziwiłbym się, gdyby wdrożenie Meta było ograniczone do wykonania takiego zadania. W szczególności trzeba być bardzo ostrożnym z implicits i z zakresu, zwłaszcza biorąc pod uwagę fakt, że makra meta są rozszerzane po typer.

Tworzenie własnej kaligrafii wymaga symboli, typów i niejawnych wyszukiwań. Obawiam się, że musisz poczekać, aż zwolni się Semantic API w Scala Meta 2.0.

Powiązane problemy