Mam trochę kodu Java z instrukcjami SQL zapisanymi jako ciągi Java (proszę nie flamewars OR / M, osadzony SQL jest tym, czym jest - nie moja decyzja).
Podzieliłem semantycznie instrukcje SQL na kilka połączonych łańcuchów w kilku wierszach kodu, aby ułatwić obsługę. Zamiast czegoś takiego:
String query = "SELECT FOO, BAR, BAZ FROM ABC WHERE BAR > 4";
Mam coś takiego:
String query =
"SELECT FOO, BAR, BAZ" +
" FROM ABC " +
" WHERE BAR > 4 ";
Ten styl znacznie ułatwia czytanie i utrzymywanie kodu SQL (IMHO), szczególnie w przypadku większych zapytań. Na przykład mogę wprowadzić mój edytor w tryb „nadpisywania” i dość łatwo modyfikować tekst w miejscu.
Zauważ, że problem ten generalnie wykracza poza konkretny przykład SQL. Każdy kod napisany z dowolnym formatowaniem pionowym, szczególnie w konstrukcjach tabelarycznych, może zostać zniszczony przez ładną drukarkę.
Teraz niektórzy członkowie projektu używają edytora Eclipse, a formatowanie semantyczne jest często niszczone, gdy formatują cały plik źródłowy.
Czy istnieje sposób, aby poinstruować środowisko Eclipse, aby ignorowało pewne wiersze źródła w odniesieniu do formatowania?
Szukam czegoś w rodzaju specjalnego komentarza, który przełącza formatyzator Eclipse. Idealnie, taki komentarz mógłby być konfigurowalny, aby był tym, co wybieramy, a inne formaterery mogłyby być zaprogramowane tak, aby szanowały go:
// STOP-ECLIPSE-FORMATTING
String query =
"SELECT FOO, BAR, BAZ" +
" FROM ABC " +
" WHERE BAR > 4 ";
// START-ECLIPSE-FORMATTING
Oczywiście, jeden „rozwiązanie” jest, aby nasi członkowie zespołu standaryzacji na jakimś zewnętrznym formater jak gruchot lub JIndent , ale to nie to co to pytanie jest o (również nie moja decyzja w sprawie tego projektu): Ja specjalnie szuka sposobu na unikaj formatyzatora Eclipse na zasadzie ad hoc.
Idealnie, rozwiązanie pozwoli mi na wstawienie instrukcji dla formatera Eclipse bez wymagania od członków zespołu używającego Eclipse wykonania jakiejkolwiek rekonfiguracji IDE (oprócz możliwości wybrania komentarza agnostycznego formatera: STOP-ECLIPSE-FORMATTING
→ STOP-FORMATTING
).
źródło
Odpowiedzi:
Eclipse 3.6 pozwala wyłączyć formatowanie poprzez umieszczenie specjalnego komentarza, np
ON / OFF funkcje muszą być włączone „na” w preferencjach Eclipse: Java > Code Style > Formatter. Kliknij Edit, Off/On Tagswłącz Enable Off/On tags.
Można także zmienić magiczne ciągi w preferencjach - zapoznaj się z dokumentacją Eclipse 3.6 tutaj .
Więcej informacji
Java > Code Style > Formatter > Edit > Off/On Tags
Ta preferencja pozwala zdefiniować jeden znacznik do wyłączenia i jeden znacznik do włączenia formatyzatora (zobacz zakładkę Wyłącz / Włącz znaczniki w profilu formatyzatora):
Musisz także włączyć flagi z Java Formatting
źródło
AFAIK z Eclipse 3.5 M4 na formatyzatorze ma opcję „Nigdy nie łącz linii”, która zachowuje podział linii użytkownika. Może to robi co chcesz.
W przeciwnym razie jest ten brzydki hack
źródło
Zobacz tę odpowiedź na SO .
Istnieje inne rozwiązanie, którego można użyć, aby ukryć formatowanie określonych komentarzy do bloku. Użyj
/*-
(zwróć uwagę na myślnik) na początku komentarza do bloku, a formatowanie nie zmieni się, jeśli sformatujesz resztę pliku.Źródło: Dokumentacja w Oracle .
źródło
Zamiast wyłączać formatowanie, możesz go skonfigurować tak, aby nie dołączał już zawiniętych linii. Podobnie do odpowiedzi Jittera, oto Eclipse STS:
Właściwości → Styl kodu Java → Formatyzator → Włącz ustawienia specyficzne dla projektu LUB Skonfiguruj Ustawienia obszaru roboczego → Edytuj → Zawijanie linii (karta) → zaznacz „Nigdy nie dołączaj już zawiniętych linii”
Zapisz, zastosuj.
źródło
Musisz włączyć możliwość dodawania tagów formatera. W pasku menu przejdź do:
Windows → Preferences Java → Code Style → Formatter
Naciśnij Editprzycisk. Wybierz ostatnią kartę. Zwróć uwagę na pole On / Off i włącz je za pomocą pola wyboru.
źródło
Jeśli umieścisz znak plus na początku wiersza, formatuje się inaczej:
źródło
Używam części ciągów o stałej szerokości (wypełnionych białymi spacjami), aby uniknąć sytuacji, w której formatyzator zepsułby moje wcięcie ciągu SQL. Daje to mieszane wyniki i nie działa, gdy białe znaki nie są ignorowane, jak w SQL, ale mogą być pomocne.
źródło
Zakończ każdą linię podwójnym ukośnikiem „//”. To powstrzyma zaćmienie przed przeniesieniem ich wszystkich na tę samą linię.
źródło
Alternatywna metoda: w Eclipse 3.6, w „Zawijaniu linii”, a następnie „Ustawieniach ogólnych” dostępna jest opcja „Nigdy nie łącz już zawiniętych linii”. Oznacza to, że formatyzator zawinie długie linie, ale nie cofnie żadnego już zawinięcia.
źródło
@xpmatteo ma odpowiedź na wyłączenie części kodu, ale oprócz tego domyślne ustawienia zaćmienia powinny być ustawione na formatowanie tylko edytowanych wierszy kodu zamiast całego pliku.
Zapobiegałoby to przede wszystkim temu, ponieważ Twoi współpracownicy przeformatowali kod, którego tak naprawdę nie zmienili. Jest to dobra praktyka, aby zapobiegać wpadkom, które sprawiają, że diff w kontroli źródła jest bezużyteczny (kiedy formatowany jest cały plik z powodu niewielkich różnic w ustawieniach formatu).
Uniemożliwiłoby to również ponowne formatowanie, gdyby opcja znaczników on / off była wyłączona.
źródło
Widmowe komentarze, dodając
//
gdzie chcesz nowe linie, są świetne!@Formatter: off dodaje odniesienie z kodu do edytora. Moim zdaniem kod nigdy nie powinien zawierać takich odniesień.
Komentarze fantomowe (//) będą działać niezależnie od użytego narzędzia formatowania. Niezależnie od Eclipse lub InteliJ lub dowolnego edytora, którego używasz. Działa to nawet z bardzo ładnym formatem Google Java
Komentarze fantomowe (//) będą działać w całej aplikacji. Jeśli masz także JavaScript i być może używasz czegoś takiego jak JSBeautifier . Możesz mieć podobny styl kodu także w JavaScript.
Właściwie prawdopodobnie chcesz formatować, prawda? Chcesz usunąć mieszane tabulatory / spacje i końcowe spacje. Chcesz wciąć wiersze zgodnie ze standardem kodu. To czego NIE chcesz, to długa linia. I to tylko to, co daje ci fantomowy komentarz!
źródło
Ten hack działa:
Sugerowałbym, aby nie używać formatyzatora. Zły kod powinien wyglądać źle, a nie sztucznie dobry. Dobry kod wymaga czasu. Nie możesz oszukiwać jakości. Formatowanie jest częścią jakości kodu źródłowego.
źródło