कोड की ग्रहण रेखाएँ


107

मैंने मेट्रिक्स प्लगइन की कोशिश की है और यद्यपि यह अच्छा है और सभी है, यह वह नहीं है जो मेरे बॉस देख रहे हैं। यह एक पंक्ति को केवल एक }रेखा के रूप में गिनता है और वह नहीं चाहता है कि वह "अपनी रेखा, अपनी शैली पसंद" के रूप में गिने। मुझे प्रदान की गई मेट्रिक्स के बारे में कुछ रिपोर्ट तैयार करनी होगी। क्या इसके लिए कोई अच्छा उपकरण हैं?


1
साइड सवाल: यह एक मीट्रिक के रूप में उपयोग किया जाना है कि आपके सॉफ्टवेयर डेवलपर्स कितनी अच्छी तरह काम कर रहे हैं? यदि ऐसा है तो चरित्र / गैर-व्हाट्सएप गिनती बेहतर हो सकती है। यहां तक ​​कि अभी भी यह वास्तव में मनमाना मीट्रिक जैसा लगता है ... जैसा कि एक मित्र ने कहा: "किसी समस्या को हल करने के लिए कोड की सामान्य अधिक पंक्तियों में समान समस्या को हल करने के लिए कोड की कम लाइनों की तुलना में बेहतर (या बदतर) नहीं है"
संकर्ण

जवाबों:


93

एक्लिप्स मेट्रिक्स प्लगइन स्थापित करें । HTML रिपोर्ट बनाने के लिए (वैकल्पिक XML और CSV के साथ) right-click a project -> Export -> Other -> Metrics

आप रिक्त और टिप्पणी-केवल लाइनों की अनदेखी करके या यदि आप चाहें तो Javadoc को छोड़कर कोड मेट्रिक्स की पंक्तियों को समायोजित कर सकते हैं। ऐसा करने के लिए टैब को चेक करें Preferences -> Metrics -> LoC

बस। घुंघराले ब्रेस को बाहर करने का कोई विशेष विकल्प नहीं है {}

प्लगइन एलओसी को एक वैकल्पिक मीट्रिक प्रदान करता है जिसे स्टेट ऑफ़ नंबर कहा जाता है । इसके बारे में लेखक का क्या कहना है:

यह मीट्रिक एक विधि में बयानों की संख्या का प्रतिनिधित्व करता है। मैं इसे कोड की पंक्तियों की तुलना में अधिक मजबूत उपाय मानता हूं क्योंकि उत्तरार्द्ध विभिन्न स्वरूपण सम्मेलनों के संबंध में नाजुक है।

संपादित करें:

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


बिल्कुल वही जो मैं देख रहा था और अच्छी निर्यात सुविधा थी।
george_h

1
इस प्लगइन का वर्तमान संस्करण (3.14.1) एक्लिप्स लूना (4.4) के साथ काम नहीं करता है। हैरानी की बात है, प्राचीन मेट्रिक्स Sourceforge से प्लगइन अभी भी काम करता है ...
ejain

बहुत से लोग रिपोर्ट करते हैं कि यह किसी भी अधिक काम नहीं कर रहा है, लेकिन कोई भी SourceForge पर एक बग फाइल नहीं करता है ...
थॉमस वेलर

6
हाँ। मैं किसी भी विकल्प को देखने में सक्षम नहीं right click a project -> Exportहूं, मैंने सीधे ग्रहण बाजार से प्लग-इन स्थापित किया है - संस्करण है - Eclipse Metrics 3.12.0, क्या कोई मेरी मदद कर सकता है। धन्यवाद!
ओवर

2
एक वर्किंग वर्जन है - github.com/qxo/eclipse-metrics-plugin/blob/master/updatesite/…
डेमियन

263

हमेशा "क्रूर बल" होता है:

  1. खोज-> फ़ाइल

  2. "युक्त पाठ" में निम्न टाइप करें -> ^.*$। फिर "नियमित अभिव्यक्ति" चेकबॉक्स की जांच करें

  3. "फ़ाइल नाम पैटर्न" -> में निम्न टाइप करें *.java

  4. "खोज" पर क्लिक करें

  5. "खोज" टैब में मैचों की संख्या की जांच करें।


11
यह वही है जो मैं देख रहा था। यह कोष्ठक या कुछ भी फैंसी को बाहर नहीं करता है, लेकिन यह उत्तर देता है कि मैं प्लगइन्स के बिना, ग्रहण में देख रहा था। धन्यवाद!
ल्यूक

24
आप इसका उपयोग भी कर सकते हैं \n[\s]*और यह खाली लाइनों को भी नजरअंदाज कर देगा
एस्कालोनियन

3
दूसरे प्लगइन की आवश्यकता के बिना बहुत अच्छा समाधान! +1
चरण

2
यह नवीनतम (नियॉन) ग्रहण के साथ काम करता है, लेकिन मेट्रिक्स प्लगइन नहीं करता है
अनातोली याकिमुक

2
@omerio टिप्पणियों को भी टाइप किया जाना चाहिए और किसी भी स्रोत कोड का आवश्यक हिस्सा हैं। उन सूचकांकों की गिनती न करना वे महत्वपूर्ण नहीं होंगे या सिर्फ अंधे पाठ हैं - जो एक गंभीर गलती है।
एक्सल एमथोर

23

यदि OSX या * NIX उपयोग पर

* .Java फ़ाइलों से जावा कोड की सभी वास्तविक पंक्तियाँ प्राप्त करें

find . -name "*.java" -exec grep "[a-zA-Z0-9{}]" {} \; | wc -l

* .Java फ़ाइलों से सभी लाइनें प्राप्त करें, जिसमें खाली लाइनें और टिप्पणियां शामिल हैं

find . -name "*.java" -exec cat | wc -l

प्रति फ़ाइल जानकारी प्राप्त करें, इससे आपको [फ़ाइल + का रास्ता, "+ लाइनों की संख्या] मिल जाएगी

find . -name "*.java" -exec wc -l {} \;

OSX पर पहली कमांड चलाने पर मुझे मिलता है: grep: अमान्य चरित्र श्रेणी 0
omerio

यह मुझे खोजने के लिए काम किया है। -नाम "* .जवा" | xargs बिल्ली | grep '[alnum]' | wc -l
omerio

2
होना चाहिएfind . -name "*.java" | xargs cat | grep "[a-zA-Z0-9{}]" | wc -l
योद्धा

8

एक अन्य तरीका उदाहरण के लिए LocMetrics की तरह एक और लोक उपयोगिता का उपयोग करना होगा ।
यह कई अन्य लोक उपकरणों को भी सूचीबद्ध करता है । एक्लिप्स के साथ एकीकरण हमेशा नहीं होगा (जैसा कि मेट्रिक्स 2 के साथ होगा , जिसे आप जांच सकते हैं क्योंकि यह मेट्रिक्स की तुलना में अधिक हाल का संस्करण है ), लेकिन कम से कम वे उपकरण तार्किक लाइनों (संक्षेप द्वारा गणना) की अवधि में कारण हो सकते हैं टर्मिनल अर्धविराम और टर्मिनल कर्ली ब्रेसिज़)।
आप ग्रहण-मेट्रिक्स के साथ भी जांच कर सकते हैं कि आप क्या उम्मीद करते हैं।


7

एक अन्य टूल Google एनेलेटिक्स है , जो आपको त्रुटियों के मामले में प्रोजेक्ट का निर्माण करने पर भी मेट्रिक्स को चलाने की अनुमति देगा


हालांकि साइट का कहना है कि यह केवल पुराने संस्करणों के लिए है, यह मेरे लिए लूना पर ठीक काम करता है। इसके लिए धन्यवाद।
कैमहार्ट

7

ग्रहण में कोड की लाइनें गिनने का एक संभावित तरीका:

खोज / फ़ाइल ... मेनू का उपयोग करते हुए, फ़ाइल खोज टैब का चयन करें, पाठ के लिए \ n [\ s] निर्दिष्ट करें (यह खाली पंक्तियों की गिनती नहीं करेगा), और नियमित अभिव्यक्ति पर टिक करें।

हैट टिप: www.monblocnotes.com/node/2030


वाह, यह सुपर प्रतिभा है। जब तक आप संख्या द्वारा भुगतान नहीं किए जाते हैं, तब तक खाली लाइनों की गिनती नहीं करना अच्छा है ...
जॉनीबी

1

मैंने एक ग्रहण प्लगइन बनाया, जो स्रोत कोड की पंक्तियों को गिन सकता है। यह Kotlin, Java, Java Script, JSP, XML, C / C ++, C #, और कई अन्य फ़ाइल प्रकारों का समर्थन करता है।

कृपया इस पर एक नज़र डालें। किसी भी तरह की प्रतिक्रिया सराहनीय है!

गिट-हब रिपॉजिटरी यहां है


0

प्रोजेक्टकोडमेटर ने एलएलओसी (कोड की तार्किक लाइनें) ठीक उसी तरह से गिना है जैसा आपने वर्णित किया है (केवल प्रभावी लाइनें)। यह बाहरी कोड मेट्रिक्स टूल के रूप में ग्रहण में एकीकृत होता है , हालांकि यह वास्तविक समय नहीं है, यह एक रिपोर्ट उत्पन्न करता है। वास्तव में यह कई स्रोत कोड मैट्रिक्स जैसे कि जटिलता, अंकगणित गहनता, हार्ड कोडित स्ट्रिंग्स, संख्यात्मक स्थिरांक को गिनता है। यहां तक ​​कि विकास के समय का भी अनुमान लगाता है। ।


0

स्थैतिक विश्लेषण के लिए, मैंने सोनारक्यूब का उपयोग किया है और इसकी सिफारिश की है जो कि उन सभी मैट्रिक्स के बारे में है जो आप संभवतः भाषाओं की एक विस्तृत श्रृंखला पर चाहते हैं , और मूल संस्करण में मुफ़्त है (आपको भाषाओं के प्रकार का विश्लेषण करने के लिए भुगतान करना होगा। केवल मेरे सिर के लिए एक बंदूक के साथ कोड)।

आपको इसे अपने सोर्स कोड रिपॉजिटरी से विश्लेषण चलाने वाले वेब-ऐप के रूप में इंस्टॉल करना होगा, लेकिन इसमें एक ग्रहण प्लगइन भी है ।

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

प्रकटीकरण: सोनारस्रोत के साथ मेरा कोई वित्तीय संबंध नहीं है।


0

पहली बात यह है कि "लाइन ऑफ कोड" (एलओसी) की अपनी परिभाषा निर्धारित करें। आपके प्रश्न में

यह एक रेखा के रूप में सिर्फ एक} के साथ एक रेखा को गिनता है और वह नहीं चाहता कि वह "अपनी रेखा, अपनी शैली की पसंद" के रूप में गिना जाए

और जवाब में, जैसे,

आप रिक्त और टिप्पणी-केवल लाइनों की अनदेखी करके या यदि आप चाहें तो Javadoc को छोड़कर कोड मेट्रिक्स की पंक्तियों को समायोजित कर सकते हैं

आप बता सकते हैं कि लोगों की अलग-अलग राय है कि कोड की एक लाइन क्या है। विशेष रूप से, लोग अक्सर इस बारे में अवगत होते हैं कि क्या वे वास्तव में कोड की संख्या या बयानों की संख्या चाहते हैं। उदाहरण के लिए, यदि आपके पास बयानों से भरी वास्तव में लंबी लाइन है, तो आप क्या रिपोर्ट करना चाहते हैं, 1 LOC या सैकड़ों कथन?

{ a = 1; b = 2; if (a==c) b++; /* etc. for another 1000 characters */ }

और जब कोई आपसे पूछता है कि आप एक एलओसी को क्या कह रहे हैं, तो सुनिश्चित करें कि आप जवाब दे सकते हैं, भले ही यह "मेरी एलओसी की परिभाषा मेट्रिक्स 2 की परिभाषा हो"। सामान्य तौर पर, अधिकांश सामान्यतः स्वरूपित कोड (मेरे उदाहरण के विपरीत) के लिए, लोकप्रिय उपकरण काफी समान संख्या देंगे, इसलिए मेट्रिक्स 2, सोनारक्यूब, आदि सभी ठीक होने चाहिए, जब तक आप उन्हें लगातार उपयोग करते हैं। दूसरे शब्दों में, एक उपकरण का उपयोग करके कुछ कोड के LOC की गणना न करें और उस मूल्य की तुलना उस कोड के बाद के संस्करण से करें जो एक अलग उपकरण के साथ मापा गया था।

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