2012-10-16 12 views
11

W moim projekcie Scala/SBT, mam jeden plik, który zajmuje do 5 (!) Minut na skompilowanie. Wszystkie pozostałe mogą się skompilować w kilka sekund. To sprawia, że ​​rozwój jest dość bolesny.Debuguj długie czasy kompilacji w Scali i SBT

Jestem pewien, że nadużywam niektórych konstrukcji Scala, ale nie mam pojęcia, jak to zrobić z debugowaniem. W jaki sposób jeden debugować długie czasy kompilacji w Scali?

Używam Scala 2.9.2 i SBT 0.11.2

+2

Długie czasy kompilacji może mieć wiele przyczyn. Nie publikując kodu, wątpię, że dostaniesz dużo pomocy. Pierwszym krokiem może być podzielenie pliku na kilka i zobaczenie, które części są najdłużej kompilowane. Pomaga to także w czasach kompilacji. –

+1

Nie mogę podzielić pliku bez refaktoryzacji dużej ilości kodu, ponieważ zawiera on tylko jedną klasę. Bardziej interesuje mnie, czy w kompilatorze można włączyć flagę, która może dać mi więcej wskazówek, gdzie jest problem. – Eyal

+1

Uczciwie, ale możesz podzielić klasę na cechy bez dotykania reszty kodu. –

Odpowiedz

10

Można spróbować następujących Scala opcje kompilatora:

  • -Ystatistics drukowania statystyk kompilatora

Znajdź fazę, która zabiera najwięcej czasu. Następnie spróbuj tych:

  • -Xprint:<phase> wydrukować program po lub "ALL"
  • -Yshow-trees przedstawiają szczegółowo drzew gdy używany w połączeniu z -Print: faza
  • -Ydebug komunikaty debugowania
  • -Ypmat-debug nazwiska wszystkich wzór aktywność matchera.

Aby włączyć te ustawienia bezpośrednio z konsoli SBT, można użyć set scalacOptions in ThisBuild += "-Ystatistics" lub do więcej niż jednego, set scalacOptions in ThisBuild ++= Seq("-Yshow-trees", "-Ydebug)