2011-11-16 3 views
8

के लिए क्लास निर्भरता उपकरण मुझे पता है कि SO पर बहुत से संबंधित प्रश्न दिए गए हैं, लेकिन मुझे कुछ भी पूरी तरह से संतोषजनक नहीं मिला है - शायद इसलिए कि मेरी आवश्यकता उठाए गए प्रत्येक प्रश्न से थोड़ा अलग है।जावा

मेरे पास एक विशाल कोडबेस है जिसे मैं छोटी तर्क इकाइयों में तोड़ना चाहता हूं। ऐसा करने के लिए, मुझे सभी उलझन/परिपत्र निर्भरताओं को ढूंढने और उन्हें हल करने की आवश्यकता है। मौजूदा स्पेगेटी के आकार के कारण, एकमात्र व्यवहार्य रणनीति विभाजित और जीतने लगती है, इसलिए मुझे विशाल परियोजना को पहले छोटे टुकड़ों में विभाजित करने या स्वतंत्र भागों को छीलने और छोटे टुकड़ों को अलग से निपटने की आवश्यकता है।

मुझे लगता है कि अधिकांश टूल केवल कक्षा या पैकेज स्तर पर काम करते हैं, लेकिन वे उप-पैकेज की अवधारणा का समर्थन नहीं करते हैं। उदाहरण के लिए, यदि मेरे पास रूट पैकेज है, उसके तहत 3 पैकेज हैं, और फिर 3 में से प्रत्येक के तहत 5 सबपैकेज हैं, तो मुझे 1 + 3 + 15 = 1 9 पैकेज मिलेगा, जो मुझे एक पागल जटिल ग्राफ देगा। अब मुझे उम्मीद है कि 3 शीर्ष स्तर के पैकेजों के बीच निर्भरता संबंधों का विश्लेषण करना है (इनकमिंग/आउटगोइंग पैकेजों की संख्या, और कौन सी कक्षाएं इन निर्भरताओं से उत्पन्न होती हैं), इन शीर्षकों में डाइविंग से पहले, उस स्तर पर इसे साफ करें स्तर के पैकेज अगले स्तर पर काम करने के लिए।

अब, मैंने इस उद्देश्य के लिए संरचना 101 का उपयोग किया है, और यह बहुत अच्छा काम करता है, लेकिन जब परीक्षण समाप्त हो जाता है, तो उत्पाद की कीमत मेरे बजट के लिए थोड़ा खड़ी है। क्या वहां कोई खाली/मुक्त स्रोत समाधान है?

अग्रिम धन्यवाद!

उत्तर

5

मेरे ज्ञान के लिए कोई निःशुल्क उपकरण नहीं है जो structure 101 से दूरस्थ रूप से तुलनीय है। (मैं संबद्ध नहीं हूँ!)

तो आपके पास पहले से ही एक समाधान है, लेकिन आप कहते हैं कि कीमत बहुत अधिक है। यह एक झूठ हो सकता है।

मेरे पास एक विशाल कोडबेस है जिसे मैं छोटी तर्क इकाइयों में तोड़ना चाहता हूं।

संभवतः आप इसे मजेदार के लिए नहीं कर रहे हैं लेकिन कोई आपको ऐसा करने के लिए भुगतान कर रहा है। संरचना 101 के लिए यूएसडी 900 लगभग 3-4 दिनों का काम है - मानते हैं कि आप हांगकांग में एक वरिष्ठ सॉफ्टवेयर डेवलपर के रूप में प्रति माह HKD 40k (USD 5200) कुछ ऐसा करते हैं। यह तर्क देना संभव होना चाहिए कि यह वास्तव में अंत में बहुत सारा पैसा बचाएगा।

+0

अर्थव्यवस्था के बारे में नहीं है 'बचत' लेकिन 'अनुकूलन'। – DerMike

+1

मैं सहमत हूं, लेकिन मार्केटिंग में आप हमेशा "पैसे बचाएं" भले ही आप इसे खर्च करते हैं :-) –

+0

धन्यवाद। "आपको जो मिलता है उसके लिए भुगतान करना" बिल्कुल सही बिंदु है। आप देखते हैं, मैं मानता हूं कि संरचना 101 काम का एक शानदार टुकड़ा है, लेकिन यह मुझे जो चाहिए उससे ज्यादा करता है, इसलिए मुझे इसके लिए भुगतान करना होगा, केवल मुझे कुछ खरीदना जो उससे बहुत कम है। मैं एक पूर्ण-विशेषीकृत डू-इट-सॉफ़्टवेयर की तलाश नहीं कर रहा हूं। मुझे कुछ विकल्प मिल गए हैं जो लगभग मुझे चाहिए, और यह केवल "सबपैकेज सहित" बिट है कि उनमें से अधिकतर ऐसा नहीं लगता है जो मुझे "चुनौतीपूर्ण" होने के रूप में नहीं मारता है। तो मैं किसी को सोच रहा हूं कि इसे उपलब्ध कराया जाना चाहिए था। – RAY

1

JAVADepend का परीक्षण एक निर्भरता संबंध का विश्लेषण करने की संभावना प्रदान करता है जिसमें आप समय पर कोई सीमा नहीं चाहते हैं।

यह एक अच्छा उपकरण है।

+0

कोई भुगतान संस्करण नहीं होगा जो कि किसी भी मौके से थोड़ा सस्ता है? – clinux

1

CodePro Analytix पर एक नज़र डालें। इसमें dependency analysis और कई अन्य चीजों के बारे में कई टूल हैं जिनके बारे में आपको अवगत होना चाहिए।

ऑफ़लाइन विश्लेषण के लिए, SonarQube पर देखें। इसमें कोई निर्भरता ग्राफ नहीं है लेकिन आपके वर्गों में निर्भरता चक्रों के लिए मॉड्यूल और गुणवत्ता माप मॉड्यूल का एक टन है।

0

क्या आपने ग्रहण के लिए ऑब्जेक्टएड या प्लांटयूएमएल प्लग-इन देखा है? आप जो भी पूछ रहे हैं उतना मजबूत नहीं है, लेकिन निश्चित रूप से कुछ अच्छे यूएमएल मॉडलिंग तंत्र प्रदान करते हैं।

0

अस्वीकरण: मैं coffea

के लेखक मैं सिखाया मैं साझा करना चाहिए हूँ, के बाद से मैं फिर से एक ऐसी ही समस्या है, का सामना करना पड़ रहा है (यानी एक विशाल बहुस्तरीय साथ शायद ही codebase, जटिल पैकेज निर्भरता और किसी भी संरचना), और मुझे इस पल के लिए उपलब्ध मुफ्त विकल्पों के बारे में पता नहीं है।

मेरी राय में, अराजक पैकेज संरचना से निपटने के दौरान कुछ भी स्क्रिप्टिंग और/या स्पष्ट समूह नियमों को धड़कता नहीं है, और चूंकि मुझे पहले ऐसा करने का कोई उचित तरीका नहीं मिला, इसलिए मैंने अपना खुद का tool लॉन्च किया।

बेशक, यह किसी भी व्यावसायिक विकल्प को हरा नहीं देगा, लेकिन यह एक काफी सरल दृष्टिकोण है, जिससे आपको आसपास के शोर के बिना दिलचस्प भागों की जांच करने की अनुमति देनी चाहिए।

0

परियोजना: https://github.com/lukehutch/fast-classpath-scanner

कैसे नवीनतम सुझावों/समाचार उपयोग करने के लिए: https://github.com/lukehutch/fast-classpath-scanner/releases

पूर्व संकलित जार + स्रोत: https://oss.sonatype.org/#nexus-search;quick~fast-classpath-scanner

उदाहरण: https://github.com/lukehutch/fast-classpath-scanner/wiki/3.9.-Generating-a-GraphViz-dot-file-from-the-classgraph

ScanResult scanResult = new FastClasspathScanner(
    MyClass.class.getPackage().getName()).scan(); 
String str = scanResult.generateClassGraphDotFile(9.2f, 8.0f); 

Files.write(str, new File("GraphViz.dot"), StandardCharsets.UTF_8); 

System.out.println("now run this at terminal: dot -Tsvg <GraphViz.dot> GraphViz.svg");