2011-08-10 12 views
12

क्या कोई जावा ईई प्रोजेक्ट में मृत कोड का पता लगाने के लिए किसी टूल के बारे में जानता है?मैं एंटरप्राइज़ जावा प्रोजेक्ट (जावा + जेएसपी + जावास्क्रिप्ट) में मृत कोड का पता कैसे लगा सकता हूं?

मैंने बहुत सारे टूल देखे हैं जो शुद्ध जावा परियोजनाओं के लिए यह अच्छी तरह से करते हैं, लेकिन कुछ भी वास्तव में परियोजनाओं को संभालने में प्रतीत नहीं होता है जिसमें जेएसपी और जावास्क्रिप्ट फाइल भी शामिल हैं। उदाहरण के लिए, यह पता लगाने के लिए कि जावा विधि उपयोग में है क्योंकि इसे किसी जेएसपी से कहा जा रहा है, या यह पता लगा रहा है कि कुछ जेएसपी फ़ाइल जिसे पहले AJAX अनुरोध के रूप में उपयोग किया गया था अब किसी भी जावास्क्रिप्ट से नहीं कहा जाता है।

धन्यवाद।

+2

यह संभवतः असंभव है क्योंकि सभी संभावित अजाक्स अनुरोध करते हैं कि जावास्क्रिप्ट का एक टुकड़ा/उत्पन्न हो सकता है जिसे आसानी से निर्धारित नहीं किया जा सकता है। –

+0

आप ऐसे परिदृश्य भी प्राप्त कर सकते हैं जहां HTML में कोई फ़ॉर्म आपके जेएसपी में सबमिट कर रहा है, इसलिए आपको HTML का भी निरीक्षण करना होगा ... लेकिन +1 क्योंकि यह एक अच्छा सवाल है। – Endophage

उत्तर

5

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

यदि कुछ लाइनों को व्यापक अवधि के दौरान निष्पादित नहीं किया गया था (याद रखें कि आपको अपने आवेदन में हर संभव स्क्रीन, कॉल, पथ और शाखा को छूना होगा) आपको जांच करनी चाहिए कि वे वास्तव में मृत नहीं हैं (या शायद आप बस इस विशेष विन्यास में अपना आवेदन चलाने के लिए भूल गए)।

समझ में आता है कि यह बहुत नाजुक है, लेकिन मुझे नहीं लगता कि आपको कुछ भी स्वचालित मिलेगा।

+0

मुझे JaCoCo नहीं पता, लेकिन एक कवरेज टूल का उपयोग करके मेरे लिए केवल तार्किक समाधान है। यह आपको जावास्क्रिप्ट फ़ाइलों के लिए कोई डेटा नहीं देगा हालांकि। –

0

मैं जेवीएम ध्वज -verbose:class (http://java.dzone.com/articles/how-use-verbose-options-java) का उपयोग करने का प्रस्ताव करता हूं। यह JVM द्वारा लोड की गई कक्षाओं के बारे में लॉगिंग जानकारी सक्षम करेगा, उदाहरण के लिए।

[Loaded java.lang.Object from C:\Program Files\Java\jdk1.7.0_04\jre\lib\rt.jar] 
[Loaded java.io.Serializable from C:\Program Files\Java\jdk1.7.0_04\jre\lib\rt.jar] 
[Loaded java.lang.Comparable from C:\Program Files\Java\jdk1.7.0_04\jre\lib\rt.jar] 
[Loaded java.lang.CharSequence from C:\Program Files\Java\jdk1.7.0_04\jre\lib\rt.jar] 

यदि कुछ कक्षा लंबे समय तक लोड नहीं होती है तो अत्यधिक संभावना के साथ यह अप्रयुक्त होता है।

बेशक यह समाधान आपको अप्रयुक्त कक्षाओं के बारे में केवल जानकारी देगा, लेकिन आपको किसी बाहरी पुस्तकालय का उपयोग करने की आवश्यकता नहीं है।