स्टैंड-अलोन जावा कोड फॉर्मेटर / ब्यूटिफायर / सुंदर प्रिंटर? [बन्द है]


84

मैं जावा के लिए उच्च-गुणवत्ता, स्टैंड-अलोन स्रोत कोड फॉर्मेटर्स के उपलब्ध विकल्पों के बारे में जानने में दिलचस्पी रखता हूं

सूत्रकार को अकेला खड़ा होना चाहिए, अर्थात उसे "बैच" मोड का समर्थन करना चाहिए जो कि किसी विशेष विकास के वातावरण से अलग हो जाता है । आदर्श रूप में, यह किसी भी विशेष ऑपरेटिंग सिस्टम से स्वतंत्र होना चाहिए । इसलिए, आईडीई डु पत्रिकाओं के लिए एक अंतर्निहित फॉर्मेटर यहां बहुत कम रुचि रखता है (जब तक कि आईडीई बैच मोड फॉर्मेटर इनवोकेशन का समर्थन नहीं करता है, शायद कमांड लाइन से)। बंद-स्रोत C / C ++ में लिखा गया एक फ़ॉर्मेटर जो केवल चलता है, कहते हैं, विंडोज आदर्श नहीं है, लेकिन कुछ दिलचस्प है।

स्पष्ट होने के लिए, एक "फ़ॉर्मेटर" (या "ब्यूटिफायर") "स्टाइल चेकर" के समान नहीं है। एक सूत्रकार इनपुट के रूप में स्रोत कोड को स्वीकार करता है, स्टाइलिंग नियम लागू करता है, और स्टाइल सोर्स कोड का उत्पादन करता है जो मूल स्रोत कोड के समान शब्दार्थ है। सिंथेटिक संशोधन कोड लेआउट को बदलने जैसे कि व्हाट्सएप को बदलने या importबयानों को व्यवस्थित करने जैसी चीजों तक सीमित हैं । बहुत कम, यदि कोई हो, तो अन्य रिफैक्टरिंग की जाती है। एक स्टाइल चेकर स्टाइल नियम भी लागू करता है, लेकिन यह आउटपुट के रूप में संशोधित स्रोत कोड का उत्पादन किए बिना नियम उल्लंघन की रिपोर्ट करता है। तो चित्र इस तरह दिखता है:

फ़ॉर्मेटर (स्टाइलिंग नियमों के अनुरूप संशोधित स्रोत कोड का उत्पादन करता है)

स्रोत कोड पढ़ें → स्टाइलिंग नियम लागू करें → स्टाइल सोर्स कोड लिखें

स्टाइल चेकर (संशोधित स्रोत कोड का उत्पादन नहीं करता है)

स्रोत कोड पढ़ें → स्टाइलिंग नियम लागू करें → नियम उल्लंघन लिखें

आगे के स्पष्टीकरण

समाधान अत्यधिक विन्यास योग्य होना चाहिए। मैं अपनी खुद की शैली को निर्दिष्ट करने में सक्षम होना चाहता हूं, न कि केवल एक पूर्व निर्धारित सूची से चयन करना।

इसके अलावा, मैं जावा में लिखे एक सामान्य उद्देश्य सुंदर-प्रिंटर की तलाश नहीं कर रहा हूं जो कई चीजों को सुंदर रूप से प्रिंट कर सकता है। मैं जावा कोड को स्टाइल करना चाहता हूं।

जरूरी नहीं कि मैं कई भाषाओं के लिए एक ग्रैंड-यूनिफाइड फॉर्मेटर में दिलचस्पी नहीं रखता । मुझे लगता है कि यह एक समाधान के लिए जावा के अलावा अन्य भाषाओं के लिए समर्थन के लिए अच्छा हो सकता है, लेकिन यह एक आवश्यकता नहीं है।

इसके अलावा, उपकरण जो केवल कोड हाइलाइटिंग करते हैं, वे सही हैं

मुझे वेब सेवा में भी कोई दिलचस्पी नहीं है। मुझे एक उपकरण चाहिए जो मैं स्थानीय रूप से चला सकूं।

अंत में, समाधानों को खुले स्रोत, सार्वजनिक डोमेन, शेयरवेयर, मुफ्त सॉफ्टवेयर, वाणिज्यिक, या किसी अन्य चीज़ तक सीमित नहीं रखा जाना चाहिए। सभी प्रकार के लाइसेंस स्वीकार्य हैं


1
मैंने कुछ कहा कि एक स्टैंडअलोन हेलियोस (ग्रहण 3.6) है जो केवल कोड स्वरूपण करता है। यह <13 एमबी, केवल जावा है। openmrs-mailing-list-archives.1560443.n2.nabble.com/…
Миша Кошелев

जवाबों:


25

JIndent (कमर्शियल) आप क्या चाहते हैं:

http://www.jindent.com/

मैंने भी ऐसा करने के लिए अतीत में जलोपी का उपयोग किया है, यह खुला स्रोत है:

http://jalopy.sourceforge.net/

संपादित करें: मैं ध्यान दूंगा कि जलोपी काफी पुराना है और इसमें कोई हालिया अपडेट नहीं है। मुझे यकीन नहीं है कि यह जावा 5/6 के साथ काम करेगा। आप इसके बजाय जैकोब को देखना चाहते हैं:

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

Roedy Green की साइट पर यहाँ फ़ॉर्मेटर्स की एक पूरी सूची भी है:

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


ओपन सोर्स जलोपी
ग्रेग

ऐसा लगता है कि ओपन सोर्स प्रोजेक्ट मर चुका है और उन्होंने त्रिमेक्स द्वारा निर्मित - एक व्यावसायिक संस्करण के साथ जाने का फैसला किया है। जब से मैंने जलाली का उपयोग किया है, यह एक लंबा समय है, मेरा मानना ​​है कि यह चींटी के साथ था। इसके बजाय जकोब पर एक नज़र डालें।
जॉन

जावा 7 के लिए जैकब को अपडेट नहीं किया जा रहा है, और TIOBE का कहना है कि यह कभी नहीं होगा।
क्रिस जोन्स


14

आप कमांड लाइन से ग्रहण सुधारक भी चला सकते हैं।

यहाँ सुविधा का ग्रहण दस्तावेज है

सबसे पहले आपको अपने जावा कोड फॉर्मेट सेटिंग्स की अपनी परियोजना के लिए कॉन्फ़िगरेशन फ़ाइल विशिष्ट बनाना होगा।

फिर {projectDirectory}/.settings/org.eclipse.jdt.core.prefsकिसी अन्य स्थान पर सहेजें ।

अब आप फॉर्मटर को कॉल करेंगे।

"c:\path\to\eclipse\eclipse.exe" -vm "C:\path\to\jdk\bin\java.exe" -application org.eclipse.jdt.core.JavaCodeFormatter -config "c:\path\to\org.eclipse.jdt.core.prefs" "C:\path\to\your\src"

[चेतावनी] ऐसा लगता है कि ग्रहण २०१] में काम करना बंद हो गया है। ग्रहण ऑक्सीजन का उपयोग करें।


7

जलोपाय ब्याज का हो सकता है। यह चींटी में प्लग करेगा और इस प्रकार आपके आईडीई से स्वतंत्र है।

Astyle भी उपयोगी हो सकता है। यह खुला स्रोत है (जालोपी की तरह) लेकिन C ++ में लिखा गया है। यह Java / C / C ++ को स्वरूपित करने की दिशा में सक्षम है और इसे बैच-चालित (शेल स्क्रिप्ट या समान के माध्यम से) किया जा सकता है


4

अद्यतन: मेरी एक गलत बग रिपोर्ट के आधार पर मेरी नई समझ के अनुसार: https://bugs.eclipse.org/bugs/show_bug.cgi?id=325289 OpenMRSFormatter.xml फ़ाइल वास्तव में एक प्राथमिकता फ़ाइल है और XML नहीं है फ़ाइल।

आप यहाँ इस तरह की फ़ाइल पा सकते हैं: https://bugs.eclipse.org/bugs/attachment.cgi?id=178374

या किसी XML एक्सपोर्टेड फॉर्मैटर फ़ाइल को इसमें कनवर्ट करें: cat formatter.xml | grep सेटिंग | sed 's / @@'> formatter.asprefs

धन्यवाद मिशा


यहाँ कुछ ऐसा है जिसे मैंने ग्रहण 3.6 जार का उपयोग करके बनाया है। यह जावा-ओनली, कमांड लाइन, और क्रॉस प्लेटफॉर्म संगत होना चाहिए:

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

एक शेल स्क्रिप्ट है जो बंडल किए गए OpenMRSCodeFormatter.xml फ़ाइल का उपयोग करता है। नमूना उत्पादन:

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$ 

यह यहाँ पोस्ट पर आधारित है: http://www.peterfriese.de/formatting-your-code-use-the-eclipse-code-formatter/

जैसा कि मुझे नहीं पता कि लिंक कितने समय तक रहेगा, मैं नीचे दी गई सामग्री का वर्णन करूंगा।

यह ग्रहण 3.6 हेलियोस वितरण पर आधारित है। मैंने लिनक्स x86 के लिए एक का उपयोग किया था, लेकिन इसे किसी भी संस्करण के लिए काम करना चाहिए, क्योंकि मैंने किसी भी (मेरी जानकारी के लिए) प्लेटफॉर्म विशिष्ट आरएआर फ़ाइलों का उपयोग नहीं किया था।

टार आर्काइव की सामग्री हैं:

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

प्लगइन्स निर्देशिका में प्रासंगिक जार सीधे ग्रहण 3.6 प्लगइन्स निर्देशिका से लिए गए हैं।

Config.ini की सामग्री हैं:

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 है:

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 $*

और OpenMRSFormatter.xml यहां उपलब्ध है: http://wiki.openmrs.org/download/attachments/3346087/OpenMRSFormatter.xml?version=1&moditDate=1282168038000

मेरा मानना ​​है कि प्रजनन के लिए पर्याप्त होना चाहिए।

इसी अवधारणा पर आधारित एक दिलचस्प परियोजना यहां पाई गई है: http://code.google.com/p/maven-java-formatter-plugin/

धन्यवाद मिशा



1

मैं डॉ। जावा का उपयोग कोड में और एक त्वरित ctrl + A + टैब के साथ करता था, यह सभी को अच्छी तरह से सिंटैक्स हाइलाइटिंग के साथ प्रारूपित करता है। Ive एक मैक और विंडोज पर इसका इस्तेमाल किया, पता नहीं कि वे लिनक्स का समर्थन करते हैं या नहीं। और यह खुला स्रोत है, अकेले खड़े हैं, और मुफ्त।


कोड के किसी भी भाग को चुनने पर टैब दबाने पर चयन प्रारूपित हो जाएगा। DrJava भी एक अच्छा इंटरैक्टिव (जैसे दुभाषिया) टैब।
डैनसमो

0

मैंने JRefactory ( http://jrefactory.sourceforge.net/ ) के अंदर एम्बेडेड बहुत प्रीप्रिन्टर का भी इस्तेमाल किया । मैंने JEdit के लिए इसके प्लगइन के माध्यम से इसकी खोज की। मैंने इसकी सराहना की क्योंकि इसमें मेरे द्वारा देखे गए बेहतर जादवॉक कवरेज थे।

दुर्भाग्य से यह मृत लगता है (2004 से कोई विकास नहीं) और वास्तव में यह जावा 5 का समर्थन नहीं करता है।

वैसे मैं इस बात की पुष्टि करता हूं कि ट्राइमेक्स मृत ओपन-सोर्स जलोपी पर आधारित एक व्यावसायिक सुइट है।



0

Jalopy सूची सामान की तरह स्टेटमेंट्स को हैंडल नहीं करता है <MyClass> ... और लिंट टिप्पणियाँ @ से शुरू होती हैं

मैं इसे सभी <MyClass> को LTLTLTMyClassGTGTGT में बदलकर और फिर @ में // @ // @ // @ (मैं सिर्फ एलटी, जीटी या // @ को बदलकर यह सुनिश्चित करने में सक्षम हूं कि वे सुनिश्चित नहीं करें पहले से ही मौजूद है। फिर मैं जलाली में सक्षम था, और जाहिर है कि मुझे सब कुछ वापस करना होगा जो यह था।

इसके अलावा, <या> को बदलने से पहले आपको यह सुनिश्चित करना होगा कि आप परिवर्तन नहीं करेंगे जैसे <= या> = आदि।

तो, आप इसे गरीब आदमी समाधान कह सकते हैं क्योंकि इसमें कई मैनुअल कदम शामिल हैं। अगर मुझे बार-बार जालोपी करनी होती, तो मैं शायद एक ऐसी स्क्रिप्ट लिखता, जिसमें सेड का इस्तेमाल किया जाता जो मेरे लिए उन बदलावों को अपने आप बदल देता।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.