question comparing PMD and CheckStyle था। हालांकि, मुझे पीएमडी और फाइंडबग के बीच अंतर/समानता पर अच्छा ब्रेकडाउन नहीं मिल रहा है। मेरा मानना है कि एक महत्वपूर्ण अंतर यह है कि पीएमडी स्रोत कोड पर काम करता है, जबकि FindBugs संकलित बाइटकोड फ़ाइलों पर काम करता है। लेकिन क्षमताओं के मामले में, क्या यह एक या/या पसंद होना चाहिए या वे एक दूसरे के पूरक हैं?पीएमडी और फाइंडबग के बीच अंतर क्या हैं?
उत्तर
मैं दोनों का उपयोग कर रहा हूं। मुझे लगता है कि वे एक दूसरे के पूरक हैं।
जैसा कि आपने कहा, स्रोत कोड पर PMD काम करता है और इसलिए इस तरह की समस्याओं पाता है: नामकरण रिवाजों का का उल्लंघन, घुंघराले ब्रेसिज़, गलत अशक्त जांच, लंबे पैरामीटर सूची, अनावश्यक निर्माता, स्विच में लापता ब्रेक, आदि की कमी PMD भी बताता है आप अपने कोड के Cyclomatic complexity के बारे में जो मुझे बहुत उपयोगी लगता है (FindBugs आपको चक्रवात जटिलता के बारे में नहीं बताता है)।
FindBugs बाइटकोड पर काम करता है। यहां कुछ समस्याएं हैं जिन्हें FindBugs पाता है जो पीएमडी नहीं करता है: बराबर() विधि उपप्रकारों पर विफल हो जाती है, क्लोन विधि शून्य हो सकती है, बूलियन मानों की संदर्भ तुलना, असंभव कास्ट, 32 बिट int 0-31 की सीमा में नहीं है, एक संग्रह जिसमें स्वयं होता है, बराबर विधि हमेशा सत्य लौटाती है, एक अनंत लूप, आदि
आमतौर पर उनमें से प्रत्येक को समस्याओं का एक अलग सेट मिल जाता है। दोनों का उपयोग करें। इन औजारों ने मुझे अच्छा जावा कोड लिखने के बारे में बहुत कुछ सिखाया।
PMD की सर्वश्रेष्ठ फीचर, अपने XPath नियम, एक नियम डिजाइनर के साथ बंडल आप आसानी से कोड के नमूनों से नए नियमों (रेगुलर एक्सप्रेशन से और XPath जीयूआई बिल्डरों के समान) का निर्माण करने देने के लिए है। FindBugs बॉक्स से बाहर मजबूत है, लेकिन परियोजना विशिष्ट नियमों और पैटर्न का निर्माण बहुत महत्वपूर्ण है।
उदाहरण के लिए, मुझे लूप के लिए 2 घोंसले वाली एक प्रदर्शन समस्या का सामना करना पड़ा, जिसके परिणामस्वरूप ओ (एन^2) चलने का समय होता है, जिसे आसानी से टाला जा सकता है। मैंने पीएमडी का उपयोग विज्ञापन-हॉक क्वेरी बनाने के लिए किया था, ताकि लूप के लिए नेस्टेड के अन्य उदाहरणों की समीक्षा की जा सके- // फॉरस्टेटमेंट/स्टेटमेंट // फोरस्टेटमेंट। इसने समस्या के 2 और उदाहरणों की ओर इशारा किया। यह एक सामान्य नियम नहीं है।
PMD
- प्रसिद्ध
- उद्योग में व्यापक रूप से इस्तेमाल
- आप एक्सएमएल
- में अपने नियम जोड़ सकते हैं आप त्रुटियाँ स्तर और चेतावनी के स्तर में विस्तृत विश्लेषण देता
- आप भी स्कैन कर सकते हैं "कॉपी और पेस्ट लाइनों" के लिए आपका कोड। डुप्लिकेट कोड। यह जावा ओप्स को लागू करने के बारे में अच्छा विचार देता है।
- 1. चेकस्टाइल, फाइंडबग, और पीएमडी कॉन्फ़िगरेशन ओवरलैप
- 2. $ {} और # {} के बीच अंतर क्या हैं?
- 3. पैरामीटर परिभाषाओं के बीच अंतर (प्रकार और नाम), और (प्रकार * नाम) के बीच अंतर क्या हैं?
- 4. osql, isql, और sqlcmd के बीच अंतर क्या हैं?
- 5. विंडोज और लिनक्स में पाइप के बीच अंतर क्या हैं?
- 6. एलएलवीएम और जावा बाइटकोड के बीच अंतर क्या हैं?
- 7. शॉकवेव, फ्लैश और फ्लेक्स के बीच अंतर क्या हैं?
- 8. कोको और कोको टच के बीच मुख्य अंतर क्या हैं?
- 9. जेनेटिक एल्गोरिदम और विकास रणनीतियों के बीच अंतर क्या हैं?
- 10. डब्ल्यूसीएफ और एएसएमएक्स वेब सेवाओं के बीच अंतर क्या हैं?
- 11. ओएलईडीबी और ओडीबीसी के बीच अंतर क्या हैं?
- 12. MySQL में INSERT और UPDATE के बीच अंतर क्या हैं?
- 13. वसंत एकीकरण और जेबॉस जेबीपीएम के बीच अंतर क्या हैं?
- 14. fwrite और लिखने के बीच मुख्य अंतर क्या हैं?
- 15. निषेध में हैसोन और संदर्भों के बीच अंतर क्या हैं?
- 16. .msi और setup.exe फ़ाइल के बीच विशिष्ट अंतर क्या हैं?
- 17. जी ++ संस्करण 4.0.0.8 और 4.3.2 के बीच अंतर क्या हैं?
- 18. ब्रेक और बाहर निकलने के बीच अंतर क्या हैं?
- 19. Doctrine1 और Doctrine2 के बीच अंतर क्या हैं?
- 20. वंडल और नियोबंडल के बीच अंतर क्या हैं?
- 21. उल्का, एम्बर.जेएस और बैकबोन.जेएस के बीच महत्वपूर्ण अंतर क्या हैं?
- 22. टचमॉव और जेस्चरचेंज के बीच अंतर क्या हैं?
- 23. MOQ और AutoFixture के बीच अंतर क्या हैं?
- 24. फ्लैश प्रोफेशनल और फ्लैश बिल्डर के बीच अंतर क्या हैं?
- 25. डीपीएम() और डीएसएम() के बीच अंतर क्या हैं?
- 26. डेमॉन और सामान्य प्रक्रिया के बीच व्यवहार अंतर क्या हैं?
- 27. struct_time और डेटाटाइम के बीच अंतर क्या हैं?
- 28. पाइप और संदेश कतारों के बीच सभी अंतर क्या हैं?
- 29. PHP और जावा के बीच अंतर क्या हैं?
- 30. वेब सेवा और विंडोज सेवा के बीच अंतर क्या हैं?
आपके द्वारा संग्रहित होने पर विशिष्ट त्रुटि कोड क्या होता है और यह क्यों ढूँढता है कि FindBugs द्वारा संभावित बग चिह्नित किया गया है? – Geek
इसके लायक होने के लिए, सोनार में दोनों (और कई अन्य) –
शामिल हैं क्योंकि सोनारक्वे 6.3 अब से नहीं है ... सोनारक्वे को अब जावा 8 की आवश्यकता है और Findbugs केवल जावा 7 का समर्थन कर रहा है – Markus