Formatter / prettifier Java działający z linii poleceń / mvn / gradle formatujący tylko zmieniony kod

0

Potrzebuję jakiś sensowny autoformatter/prettifier do kodu Java, z następującymi ficzerami:

  • możliwość odpalenia z linii poleceń
  • integracja z popularnymi systemami budowania projektu - maven, gradle, ant
  • sprawdzanie zgodności formatowania, ale bez wprowadzania zmian, na potrzeby CI
  • formatowanie/sprawdzanie tylko kodu zmienionego względem danej gałęzi / wersji w git
  • możliwość dostosowania reguł - np. włączenie tylko niektórych, bo chcemy łapać grube problemy z formatowaniem, natomiast nie chcemy format-nazi, który będzie się czepiał każdej kropki i robił wszystkiego po swojemu, bo autoformattery też nie zawsze ogarniają niektóre rzeczy

Mamy mnóstwo kodu, którego z pewnych powodów nie chcemy reformatować, ale chcemy wymusić konretne formatowanie zmian.
Do tej pory używaliśmy formatowania w IDE (IntelliJ idea), ale w większym zespole sprawdza się to słabo, bo raz po raz komuś rozjeżdża się konfiguracja i wrzuca źle sformatowany kod do repo i potem marnuje się czas na review na zajmowanie się duperelami. Chcielibyśmy zablokować możliwość merge nowych zmian które naruszają code-style guide a zarazem dać łatwe narzędzie do naprawienia swojego kodu.

0

A skąd ten formatter miałby wiedzieć co to jest "zmieniony kod"?

Musiałby mieć integrację z Twoim systemem kontroli wersji.

0
Riddle napisał(a):

A skąd ten formatter miałby wiedzieć co to jest "zmieniony kod"?

Musiałby mieć integrację z Twoim systemem kontroli wersji.

Mógłby mieć taką integrację z gitem. Teraz wiele toolsów ma integrację z popularnymi SCM, więc niby w czym problem?
Chociaż w sumie nie musiałby. Wystarczyłoby jakby przyjmował dodatkowo diffa (standard) na wejście, albo nawet tylko numery / zakresy zmienionych linii. Wtedy integrację z gitem byśmy sobie banalnie oskryptowali - wyciągnięcie diffa z gita to jedno polecenie, wyciągnięcie numerów zmienionych linii z diffa to też jakiś prosty jednolinijkowiec sed/awk.

IDE taki ficzer mają, to w sumie dlaczego tool CLI nie mógłby?

1

google-java-format

sa pluginy to buld tooli i ide

1

W JS dodałem do projektu git hooka, który przy commicie wywołuje skrypt prettiera i eslinta na formatowanie i fix kodu tylko na commitowanych plikach. Spróbuj coś takiego, wiem że jest prettier dla javy.

1

@Krolik: a może być formatter-maven-plugin. Robi wystarczająco dużo z tego co chcesz.

1 użytkowników online, w tym zalogowanych: 0, gości: 1