Kako mogu isključiti oblikovanje Eclipse koda za određene dijelove Java koda?

Imam Java kod sa SQL izrazima napisanim kao nizove Java (molim, bez OR / M flamewars, ugrađeni SQL je ono što jest, a ne moje rješenje).

Podijelila sam SQL upite semantički u nekoliko spojenih linija u nekoliko redaka koda radi lakšeg održavanja. Stoga, umjesto nešto poput:

 String query = "SELECT FOO, BAR, BAZ FROM ABC WHERE BAR > 4"; 

Imam nešto poput:

 String query = "SELECT FOO, BAR, BAZ" + " FROM ABC " + " WHERE BAR > 4 "; 

Ovaj stil olakšava čitanje i održavanje SQL-a (IMHO), posebno za velike upite. Na primjer, mogu urednik staviti u "overwrite" način i vrlo lako mijenjati tekst na mjestu.

Imajte na umu da je ovaj problem generaliziran izvan specifičnog SQL primjera. Bilo koji kod pisan s bilo kojim vertikalnim oblikovanjem, osobito tabličnim konstrukcijama, podložan je uništenju od strane lijepog pisača.

Neki članovi projekta sada koriste uređivač Eclipse, a semantičko oblikovanje često se uništava kada formatiraju cijelu izvornu datoteku.

Postoji li način da se Eclipse uputi ignorirati neke izvorne nizove u vezi oblikovanja?

Tražim nešto poput posebnog komentara koji mijenja Eclipse formatter. U idealnom slučaju, takav komentar može se konfigurirati kao ono što odaberemo, a drugi formati mogu se programirati na isti način kao i:

 // STOP-ECLIPSE-FORMATTING String query = "SELECT FOO, BAR, BAZ" + " FROM ABC " + " WHERE BAR > 4 "; // START-ECLIPSE-FORMATTING 

Očito je da je jedno "rješenje" da naši članovi tima standardiziraju neku vrstu vanjskog oblikovanja, kao što su Jalopy ili JIndent , ali to nije ono o čemu se radi (a ne i moja odluka o ovom projektu): posebno tražim način da se izbjegne oblikovanje ad-hoc programa Eclipse.

U idealnom slučaju, rješenje će mi omogućiti da ubacim upute za oblikovanje Eclipsea , bez potrebe da članovi tima koriste Eclipse, da izvrše bilo kakvu IDE rekonfiguraciju (osim, možda, odabirom naredbe formattera agnostičkog formatera: STOP-ECLIPSE-FORMATTINGSTOP-FORMATTING ).

437
30 нояб. dao Greg Mattes 30. studenog 2009-11-30 19:38 '09 u 19:38 2009-11-30 19:38
@ 12 odgovora

Eclipse 3.6 vam omogućuje da onemogućite formatiranje slanjem posebnog komentara, na primjer

 // @formatter:off ... // @formatter:on 

Funkcije uključivanja / isključivanja moraju se uključiti "u" postavkama Eclipse: Java > Stil koda > Formatter . Kliknite Uredi , Ozn .

Također je moguće promijeniti magične linije u postavkama - pogledajte dokumente Eclipse 3.6 ovdje .

Dodatne informacije

Java > Stil koda > Formatter > Edit > Off / On Tags

Ta postavka omogućuje vam da odredite jednu oznaku koju želite onemogućiti i jednu oznaku da biste omogućili oblikovanje (pogledajte karticu "Isključeno / uključeno oznake" u profilu oblikovanja):

2019

786
28 июля '10 в 17:17 2010-07-28 17:17 odgovor je dat xpmatteo 28. srpnja '10 u 17:17 2010-07-28 17:17

AFAIK iz Eclipse 3.5 M4 o oblikovanju ima opciju "Never Join Lines", koja čuva prekide korisničkih linija. Možda radi ono što želite.

Inače postoji ova ružna hack

border=0
 String query = // "SELECT FOO, BAR, BAZ" + // " FROM ABC" + // " WHERE BAR > 4"; 
57
30 нояб. Odgovor je dao treptaj 30. studenog 2009-11-30 19:48 '09 u 19:48 2009-11-30 19:48

Umjesto da onemogućite oblikovanje, možete ga konfigurirati tako da ne dodaje već obavijene nizove. Poput Jitterova odgovora, ovdje za Eclipse STS:

Svojstva → Stil Java koda → Formatter → Omogući posebne postavke projekta ILI Konfiguriraj postavke radnog prostora → Uredi → Linearno pakiranje (kartica) → označite potvrdni okvir "Nikada ne stavljaj već omotane linije"

Spremi, primijeni.

2019

22
31 июля '14 в 17:30 2014-07-31 17:30 odgovor je dan ilinca 31. srpnja 14 u 17:30 2014-07-31 17:30

Pogledajte ovaj odgovor za SO .

Postoji još jedno rješenje koje se može koristiti za suzbijanje oblikovanja pojedinačnih komentara bloka. Koristite

Izvor: Oracle dokumentacija .

18
11 апр. Odgovor dao Renaud 11. travnja 2014-04-11 18:01 '14 u 18:01 2014-04-11 18:01

Morate omogućiti mogućnost dodavanja oznaka za oblikovanje. U traci izbornika:

Windows Postavke Java Stil koda Formatter

Kliknite gumb Uredi . Odaberite posljednju karticu. Zabilježite polje "Uključeno / Isključeno". I uključite ih pomoću potvrdnog okvira.

16
17 авг. Odgovor je dan ZilWerks 17 aug. 2011-08-17 21:06 '11 u 21:06 2011-08-17 21:06

Ako stavite znak plus na početku retka, on ga formatira na različite načine:

 String query = "SELECT FOO, BAR, BAZ" + " FROM ABC" + " WHERE BAR > 4"; 
14
30 нояб. Odgovor dao CPerkins 30. studenog 2009-11-30 19:50 '09 u 19:50 2009-11-30 19:50

Kraj svake crte s dvostrukom kosom crtom "//". To bi uzrokovalo pomračenje da ih sve premjesti u jedan red.

5
23 июля '16 в 5:12 2016-07-23 05:12 odgovor je dat Evvo 23. srpnja '16 u 5:12 2016-07-23 05:12

Koristim nizove fiksne širine (obložene s razmacima) kako bi se izbjeglo oblikovanje koje je spriječilo uvlačenje SQL nizova. To vam daje mješovite rezultate i neće raditi tamo gdje prostori nisu ignorirani, kao u SQL-u, ali mogu biti korisni.

  final String sql = "SELECT v.value FROM properties p " + "JOIN property_values v ON p.property_id = v.property_id " + "WHERE p.product_id = ? " + "AND v.value IS NOT NULL "; 
5
16 июля '10 в 14:17 2010-07-16 14:17 Odgovor je dao Guus 16. srpnja '10. U 14:17. 2010-07-16 14:17

@xpmatteo ima odgovor na isključivanje dijelova koda, ali osim toga, default parametri eklipse trebaju biti konfigurirani samo za formatiranje uređenih linija koda, a ne za cijelu datoteku.

 Preferences->Java->Editor->Save Actions->Format Source Code->Format Edited Lines 

To bi prije svega spriječilo, jer vaši kolege preoblikuju kod koji se zapravo nisu promijenili. Ovo je dobra praksa za sprječavanje kvarova koji čine diffs beskorisnim za vaš izvor (kada je cijela datoteka preoblikovana zbog manjih razlika u postavkama formata).

To će također spriječiti ponovno formatiranje ako je onemogućena opcija oznaka za uključivanje / isključivanje.

4
15 авг. odgovor je dan Robin 15 aug. 2012-08-15 18:02 '12 u 18:02 2012-08-15 18:02

Alternativna metoda: u Eclipse 3.6 u odjeljku “Linearno pakiranje”, zatim “Opće postavke” postoji opcija “Nikada se ne spajajte već smotane linije”. To znači da će se formatiranje obaviti dugačkim crtama, ali neće poništiti pakiranje koje već imate.

4
16 апр. odgovor je dan kmccoy 16 apr. 2011-04-16 20:10 '11 u 20:10 2011-04-16 20:10

Fantomski komentari dodaju // gdje želite nove linije su super!

  1. @Formatter: off dodaje vezu iz koda uredniku. Kodeks bi, po mom mišljenju, nikada ne bi trebao imati takve veze.

  2. Fantomski komentari (//) funkcionirat će bez obzira na korišteni alat za oblikovanje. Bez obzira na Eclipse ili InteliJ ili bilo koji drugi urednik koji koristite. Čak radi s vrlo lijepim Google Java formatom.

  3. Fantomski komentari (//) funkcionirat će tijekom cijele aplikacije. Ako imate i Javascript i možda koristite nešto poput JSBeautifier . Sličan stil koda može se koristiti iu Javascriptu.

  4. Zapravo, vjerojatno želite ispravno formatirati ? Želite ukloniti miješane prostore i mjesta. Želite se vratiti na linije u skladu sa standardnim kodom. Ono što NE želite je dugačka crta. Ovo i samo to vam daje fantomski komentar!

0
01 июня '17 в 22:45 2017-06-01 22:45 odgovor je dat Tomasu Bjerreu 1. lipnja '17. u 10:45 2017-06-01 22:45

Ovaj hack radi:

 String x = "s" + //Formatter Hack "a" + // "c" + // "d"; 

Ja bih predložio da ne koristite formatter. Loš kôd bi trebao izgledati loše, a ne umjetno. Dobar kod zahtijeva vrijeme. Ne možete zavarati kvalitetu. Formatiranje je dio kvalitete izvornog koda.

-3
30 нояб. Odgovor dao Thomas Jung 30. studenog 2009-11-30 19:47 '09 u 19:47 2009-11-30 19:47