क्या एक साधारण सीएलआई जावा लिंटर है? [बन्द है]


86

मैं सीएलआई पर चलने में सक्षम जावा लिंटर को खोजने की कोशिश कर रहा हूं जो कि ग्रहण से अलग है जिसे मैं गिट के लिए एक कमिट के रूप में या हमारी स्वचालित बिल्ड स्क्रिप्ट से कॉल कर सकता हूं। क्या ऐसी किसी वस्तु का अस्तित्व है?

आदर्श रूप से इसे अप्रयुक्त आयात और चर के लिए जांचने की आवश्यकता है, कि शैली के दिशानिर्देशों का पालन किया जाता है, अपवादों का ठीक से उपयोग किया जाता है, हालांकि उन विशेषताओं में से कुछ सबसेट बेहतर होगा कि अब हमारे पास क्या है - कुछ भी नहीं!


2
//, यह एक सॉफ्टवेयर सिफारिश के लिए एक अनुरोध नहीं है?
नाथन बासानी

3
मुझे नहीं पता कि मुझे यहां या मेटा पर पूछना चाहिए, लेकिन इस तरह के सवालों से क्या गलत है जो सिफारिशें पूछते हैं? यकीन है कि इस सवाल का कोई एकल, वस्तुनिष्ठ उत्तर नहीं है, लेकिन फिर कई तकनीकी सवालों का भी यही हाल है। इस प्रश्न को फिर से रखा जा सकता है क्योंकि "मेरे पास कोई लिंटर नहीं है और मुझे नहीं पता कि कौन से उपकरण उपलब्ध हैं, वर्तमान और व्यापक रूप से उपयोग किए जाते हैं"। क्या वह मदद करेगा? मैं कहीं और की तुलना में StackOverflow पर एक क्यूरेट, रैंक, और दिनांक-लॉग किया गया Q / A ढूँढता हूँ। इस तरह के प्रश्न वाले लोगों को कहां जाना चाहिए, यदि यहां नहीं है?
काइल क्रुल

जवाबों:


78
  • मौजूदा कीड़े खोजने के लिए स्पॉटबग्स (पहले फाइंडबग्स )। बहुत अच्छा!
  • पैटर्न खोजने के लिए पीएमडी जो बग को जन्म दे सकता है (जैसे अप्रयुक्त चर)
  • चेकस्टाइल कोडिंग मानकों और सम्मेलनों को लागू करने के लिए (जैसे व्हॉट्सएप, जावदोक)
  • त्रुटि प्रवण हुक आपके एप्लिकेशन के संकलन चरण में सही है

इन सभी उपकरणों में कुछ अतिव्यापी नियम हैं। इसी तरह के कई अन्य उपकरण हैं, लेकिन ये सबसे लोकप्रिय और समर्थित हैं।


क्या आप कहेंगे कि फाइंडबग्स और पीएमडी अलग-अलग चीजें करते हैं? पिछली बार जब मैंने इस पर ध्यान दिया, तो मैंने निष्कर्ष निकाला कि वे समान थे कि हमें केवल एक की जरूरत थी (और पीएमडी उठाया)। हमने चेकस्टाइल को भी चलाया, और हाँ, पाया कि पीएमडी और चेकस्टाइल ओवरलैप भी।
टॉम एंडरसन

@TomAnderson - मैं कहूंगा कि वे निश्चित रूप से अलग चीजें करते हैं, हां। दोनों का मूल्य है (जाहिर है कि वहाँ भी ओवरलैप है)।
jtahlborn

हां, बहुत अलग लक्ष्य। फाइंडबग्स कभी-कभी गहन विश्लेषण करके ACTUAL बग्स को खोजने की कोशिश करते हैं। पीएमडी सिर्फ ऐसे पैटर्न की तलाश करता है जो कभी-कभी बग के लिए जाने जाते हैं। व्यक्तिगत रूप से, मैं FindBugs और Checkstyle का उपयोग करता हूं क्योंकि कम ओवरलैप है।
15

आप बताना चाह सकते हैं कि pmd में 2 अलग-अलग प्रकार के चेक, pmd और cpd हैं।
jtahlborn

4
FindBugs अब है SpotBugs (पर GitHub )
Matruskan

12

इसके अलावा, सोनार को देखें , जो कई अन्य उपकरणों को जोड़ता है और इसके लिए एक अच्छा दृश्य भी प्रदान करता है।

चेकस्टाइल, फाइंडबग्स, पीएमडी, क्लिर, एफबी-कंट्रीब से नियम।


निश्चित रूप से यह सुनिश्चित नहीं है कि इसे पोस्ट-कमिट हुक में कैसे जोड़ा जाए, लेकिन http://docs.codehaus.org/display/SONAR/Analyzing+with+Maven एक अच्छा प्रारंभिक बिंदु हो सकता है (विशेषकर यदि आप मावेन का उपयोग कर रहे हैं)।

शायद http://docs.codehaus.org/display/SONAR/Continuous+Integration में सूचीबद्ध दृष्टिकोणों में से एक का उपयोग करने पर भी विचार करें क्योंकि ऐसा लगता है कि आप अपनी पूरी टीम के लिए बेहतर टूलिंग देखने की कोशिश कर रहे हैं ("हालांकि कुछ सबसेट उन सुविधाओं को बेहतर होगा कि हमारे पास अभी क्या है - कुछ भी नहीं! "


2
+1 प्रश्न पूछे जाने के चार साल बाद, सोनारक्यूब अधिक सक्रिय, आधुनिक और पूर्ण प्रतीत होता है। यह ऊपर उल्लिखित उपकरणों को संयोजित करने के लिए इस्तेमाल किया गया था, लेकिन अब यह देशी
user2518618

-1

यह बिल्कुल वही है जो मैं काम कर रहा हूं: जावा कोड की गुणवत्ता की जांच करने के लिए इस्तेमाल किया जाने वाला एक उपकरण सीएलआई-अनुकूल। इसमें एक इंटरैक्टिव मॉडेलिटी भी है। आप एकल क्वेरी (एकल चेतावनियों के लिए) या सभी क्वेरीज़ को एक साथ चला सकते हैं।

उपकरण अपने प्रारंभिक चरण में हैं, लेकिन मैं लगभग हर दिन इस पर काम कर रहा हूं। यह यहाँ उपलब्ध है:

https://github.com/ftomassetti/effectivejava

कृपया मुझे बताएं कि आप इसके बारे में क्या सोचते हैं और प्रश्न पूछने के लिए स्वतंत्र महसूस करते हैं।


3
इस परियोजना की अंतिम प्रतिबद्धता 2 साल पहले थी। यकीन नहीं होता कि यह सक्रिय रूप से अब और विकसित हो रहा है।
डैनियल ईगल

नहीं ऐसा नहीं है। लेकिन फिर मैंने JavaParser पर काम करना शुरू कर दिया। यह परियोजना आपको एक सीएलआई मा नहीं देती है जो इसके ऊपर बनाई जा सकती है।
फेडेरिको टॉमासेट्टी
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.