Pertanyaan Stand-alone Java code formatter / beautifier / printer cantik? [Tutup]


Saya tertarik untuk belajar tentang pilihan yang tersedia pemformat kode sumber berkualitas tinggi yang berdiri sendiri untuk Java.

Formatter harus berdiri sendiri, artinya, harus mendukung a mode "batch" itu adalah dipisahkan dari lingkungan pengembangan tertentu. Idealnya, seharusnya begitu independen dari sistem operasi tertentu demikian juga. Jadi, built-in formatter untuk IDE du jour kurang menarik di sini (kecuali IDE itu mendukung pemanggilan format batch mode, mungkin dari baris perintah). Pemformat yang ditulis dalam sumber tertutup C / C ++ yang hanya berjalan di, katakanlah, Windows tidak ideal, tetapi agak menarik.

Agar lebih jelas, "formatter" (atau "beautifier") tidak sama dengan "pemeriksa gaya". Pemformat menerima kode sumber sebagai masukan, menerapkan aturan gaya, dan menghasilkan kode sumber bergaya yang secara semantis setara dengan kode sumber asli. Modifikasi sintaks terbatas pada hal-hal seperti memodifikasi tata letak kode seperti dalam mengubah spasi, atau mengatur import pernyataan. Sangat sedikit, jika ada, refactoring lain dilakukan. Pemeriksa gaya juga menerapkan aturan gaya, tetapi sederhana saja laporan pelanggaran aturan tanpa menghasilkan kode sumber yang dimodifikasi sebagai output. Jadi gambarnya seperti ini:

Formatter (menghasilkan kode sumber yang dimodifikasi yang sesuai dengan aturan gaya)

Baca Kode Sumber → Terapkan Aturan Gaya → Tulis Kode Sumber Bergaya

Pemeriksa Gaya (tidak menghasilkan kode sumber yang dimodifikasi)

Baca Kode Sumber → Terapkan Aturan Gaya → Tulis Pelanggaran Aturan

Klarifikasi Lebih Lanjut

Solusi harus sangat dapat dikonfigurasi. Saya ingin dapat menentukan gaya saya sendiri, tidak hanya memilih dari daftar preset.

Juga, saya tidak mencari tujuan umum printer cantik yang ditulis di Jawa yang bisa mencetak banyak hal. Saya ingin memberi style kode Java.

Saya juga tidak perlu tertarik pada formatter grand-unified untuk banyak bahasa. Saya kira mungkin bagus untuk solusi untuk memiliki dukungan untuk bahasa lain selain Java, tapi itu bukan keharusan.

Selanjutnya, alat yang hanya melakukan penyorotan kode adalah kanan  di luar.

Saya juga tidak tertarik dengan layanan web. Saya ingin alat yang bisa saya jalankan secara lokal.

Akhirnya, solusi tidak perlu dibatasi untuk open source, domain publik, shareware, perangkat lunak bebas, komersial, atau apa pun. Semua bentuk lisensi dapat diterima.


76
2018-06-15 15:07


asal


Jawaban:


JIndent (Komersial) melakukan apa yang Anda inginkan:

http://www.jindent.com/

Saya juga pernah menggunakan Jalopy di masa lalu untuk melakukan ini, itu open source:

http://jalopy.sourceforge.net/

EDIT: Saya akan mencatat bahwa Jalopy cukup tua dan sepertinya tidak ada pembaruan terbaru untuk itu. Saya tidak yakin apakah ini akan bekerja dengan Java 5/6. Anda mungkin ingin melihat Jacobe sebagai gantinya:

http://www.tiobe.com/index.php/content/products/jacobe/Jacobe.html

Ada juga daftar formatters yang lebih lengkap di sini di situs Roedy Green:

http://mindprod.com/jgloss/beautifier.html


25
2018-06-15 15:11



Anda juga dapat menjalankan Eclipse reformatter dari baris perintah. Periksa entri blog ini


14
2017-07-16 14:36



Mobil tua mungkin menarik. Ini akan dicolokkan ke Ant dan dengan demikian tidak bergantung pada IDE Anda.

Gaya mungkin juga berguna. Ini open source (seperti Jalopy) tetapi ditulis dalam C ++. Ini diarahkan untuk memformat Java / C / C ++ dan dapat di-batch-driven (melalui skrip shell atau yang serupa)


6
2018-06-15 15:12



UPDATE: Per pemahaman baru saya berdasarkan pada salah laporan bug yang saya ajukan: https://bugs.eclipse.org/bugs/show_bug.cgi?id=325289 File OpenMRSFormatter.xml sebenarnya harus menjadi file preferensi dan bukan file XML.

Anda dapat menemukan file seperti ini di sini: https://bugs.eclipse.org/bugs/attachment.cgi?id=178874

atau mengkonversi file formatter yang diekspor XML dengan: cat formatter.xml | pengaturan grep | sed 's / @@'> formatter.asprefs

Terima kasih Misha


Ini adalah sesuatu yang saya buat menggunakan guci Eclipse 3.6. Ini adalah Java-only, command line, dan harus cross platform yang kompatibel:

http://www.sendspace.com/file/nm4ptt

Ada skrip shell yang menggunakan file OpenMRSCodeFormatter.xml yang terbundel. Output sampel:

misha@misha-d630:~/openmrs-code-formatter$ cat ../Test.java
public class Test {



public a() {
System.out.println("! I did not format this right!");
}



}misha@misha-d630:~/openmrs-code-formatter$ ./format.sh ../Test.java
Configuration Name: OpenMRSFormatter.xml
Starting format job ...
Done.
cat ../misha@misha-d630:~/openmrs-code-formatter$ cat ../Test.java
public class Test {

        public a() {
                System.out.println("! I did not format this right!");
        }

}misha@misha-d630:~/openmrs-code-formatter$ 

Ini berdasarkan posting di sini: http://www.peterfriese.de/formatting-your-code-using-the-eclipse-code-formatter/

Karena saya tidak tahu berapa lama tautan akan tetap aktif, saya akan menjelaskan isi di bawah ini.

Ini didasarkan pada distribusi Eclipse 3.6 Helios. Saya menggunakan yang untuk Linux x86, tetapi harus bekerja untuk versi apa saja, karena saya tidak menggunakan file JAR spesifik platform apa pun (untuk pengetahuan saya).

Isi arsip tar adalah:

misha@misha-d630:~$ tar tvjf openmrs-code-formatter.tar.bz2  | sort 
tar: Record size = 8 blocks
drwxr-xr-x misha/misha       0 2010-09-11 19:32 openmrs-code-formatter/plugins/
drwxr-xr-x misha/misha       0 2010-09-11 19:33 openmrs-code-formatter/configuration/org.eclipse.equinox.simpleconfigurator/
drwxr-xr-x misha/misha       0 2010-09-11 19:38 openmrs-code-formatter/configuration/
-rw-r--r-- misha/misha  101957 2010-09-11 19:03 openmrs-code-formatter/plugins/org.eclipse.equinox.common_3.6.0.v20100503.jar
-rw-r--r-- misha/misha  107210 2010-09-11 19:32 openmrs-code-formatter/plugins/org.eclipse.core.commands_3.6.0.I20100512-1500.jar
-rw-r--r-- misha/misha  111098 2010-09-11 19:06 openmrs-code-formatter/plugins/org.eclipse.equinox.preferences_3.3.0.v20100503.jar
-rw-r--r-- misha/misha 1147220 2010-09-11 18:45 openmrs-code-formatter/plugins/org.eclipse.osgi_3.6.0.v20100517.jar
-rw-r--r-- misha/misha    1812 2010-09-11 19:33 openmrs-code-formatter/configuration/org.eclipse.equinox.simpleconfigurator/bundles.info
-rw-r--r-- misha/misha  182596 2010-09-11 19:05 openmrs-code-formatter/plugins/org.eclipse.equinox.registry_3.5.0.v20100503.jar
-rw-r--r-- misha/misha  248071 2010-09-11 19:29 openmrs-code-formatter/plugins/org.eclipse.text_3.5.0.v20100601-1300.jar
-rw-r--r-- misha/misha     265 2010-09-11 19:21 openmrs-code-formatter/configuration/config.ini
-rw-r--r-- misha/misha   28554 2010-09-11 19:34 openmrs-code-formatter/OpenMRSFormatter.xml
-rw-r--r-- misha/misha   39331 2010-09-11 19:17 openmrs-code-formatter/plugins/org.eclipse.equinox.simpleconfigurator_1.0.200.v20100503.jar
-rw-r--r-- misha/misha 4504121 2010-09-11 19:27 openmrs-code-formatter/plugins/org.eclipse.jdt.core_3.6.0.v_A58.jar
-rw-r--r-- misha/misha   47023 2010-09-11 18:42 openmrs-code-formatter/plugins/org.eclipse.equinox.launcher_1.1.0.v20100507.jar
-rw-r--r-- misha/misha   52710 2010-09-11 19:29 openmrs-code-formatter/plugins/org.eclipse.core.filesystem_1.3.0.v20100526-0737.jar
-rw-r--r-- misha/misha 6451211 2010-09-11 19:32 openmrs-code-formatter/plugins/com.ibm.icu_4.2.1.v20100412.jar
-rw-r--r-- misha/misha   70928 2010-09-11 19:01 openmrs-code-formatter/plugins/org.eclipse.core.runtime_3.6.0.v20100505.jar
-rw-r--r-- misha/misha  769898 2010-09-11 19:29 openmrs-code-formatter/plugins/org.eclipse.core.resources_3.6.0.v20100526-0737.jar
-rw-r--r-- misha/misha   83817 2010-09-11 19:07 openmrs-code-formatter/plugins/org.eclipse.equinox.app_1.3.0.v20100512.jar
-rw-r--r-- misha/misha   86986 2010-09-11 19:31 openmrs-code-formatter/plugins/org.eclipse.core.expressions_3.4.200.v20100505.jar
-rw-r--r-- misha/misha   90837 2010-09-11 19:05 openmrs-code-formatter/plugins/org.eclipse.core.jobs_3.5.0.v20100515.jar
-rw-r--r-- misha/misha   91928 2010-09-11 19:06 openmrs-code-formatter/plugins/org.eclipse.core.contenttype_3.4.100.v20100505-1235.jar
-rwxr-xr-x misha/misha     111 2010-09-11 19:39 openmrs-code-formatter/format.sh

Guci yang relevan dalam direktori plugin diambil langsung dari direktori plugin Eclipse 3.6.

Isi config.ini adalah:

misha@misha-d630:~$ more openmrs-code-formatter/configuration/config.ini 
osgi.bundles=reference\:file\:org.eclipse.equinox.simpleconfigurator_1.0.200.v20100503.jar@1\:start
org.eclipse.equinox.simpleconfigurator.configUrl=file\:org.eclipse.equinox.simpleconfigurator/bundles.info
eclipse.application=org.eclipse.jdt.core.JavaCodeFormatter

format.sh adalah:

misha@misha-d630:~$ more openmrs-code-formatter/format.sh 
#!/bin/bash
java -jar plugins/org.eclipse.equinox.launcher_1.1.0.v20100507.jar -config OpenMRSFormatter.xml $*

dan OpenMRSFormatter.xml tersedia di sini: http://wiki.openmrs.org/download/attachments/3346087/OpenMRSFormatter.xml?version=1&modificationDate=1282168038000

Saya percaya itu harus cukup untuk mereproduksi.

Proyek yang menarik berdasarkan konsep yang sama ditemukan di sini: http://code.google.com/p/maven-java-formatter-plugin/

Terima kasih Misha


4
2017-09-12 18:20



Coba "Jacobe Code Beautifier":

http://www.tiobe.com/index.php/content/products/jacobe/Jacobe.html

Edisi pribadi gratis.


1
2017-08-06 21:43



Saya dulu menggunakan Dr. Java untuk mengkodekan dan dengan cepat ctrl + A + tab itu memformat semuanya dengan baik dengan penyorotan sintaks. Ive menggunakannya pada Mac dan Windows, tidak tahu apakah mereka mendukung linux. Dan itu open source, berdiri sendiri, dan gratis.


1
2018-06-15 15:15



Saya juga menggunakan banyak PrettyPrinter yang tertanam di dalam JRefactory (http://jrefactory.sourceforge.net/). Saya menemukannya melalui plugin untuk JEdit. Saya menghargainya karena memiliki cakupan javadoc yang lebih baik yang pernah saya lihat.

Sayangnya tampaknya mati (tidak ada evolusi sejak 2004) dan sebenarnya tidak mendukung Java5.

Dengan cara saya mengkonfirmasi bahwa Triemax adalah suite komersial berdasarkan Jalopy open source yang mati.


0
2018-06-15 20:01



Lihat kami Java Formatter untuk alat yang menangani semua dialek Java, termasuk versi 7.


0
2018-05-05 17:01