একটি এক্সকোড প্রকল্পে কোডের কতগুলি লাইন রয়েছে তা নির্ধারণ করার কোনও উপায় আছে? আমি প্রতিশ্রুতিবদ্ধ যে ম্যানেজমেন্টাল পরিমাপ বা কর্মচারী মানদণ্ডের উদ্দেশ্যে এই জাতীয় তথ্য ব্যবহার করবেন না। ;)
একটি এক্সকোড প্রকল্পে কোডের কতগুলি লাইন রয়েছে তা নির্ধারণ করার কোনও উপায় আছে? আমি প্রতিশ্রুতিবদ্ধ যে ম্যানেজমেন্টাল পরিমাপ বা কর্মচারী মানদণ্ডের উদ্দেশ্যে এই জাতীয় তথ্য ব্যবহার করবেন না। ;)
উত্তর:
পরীক্ষা করে দেখুন CLOC ।
ক্লক অনেক প্রোগ্রামিং ভাষায় ফাঁকা লাইন, মন্তব্য লাইন এবং উত্স কোডের শারীরিক লাইন গণনা করে।
( লিগ্যাসি বিল্ডগুলি সোর্সফর্গে সংরক্ষণাগারভুক্ত করা হয়েছে ))
আমি এটিকে চারদিকে ভাসমান দেখছি এবং এটি নিজেই ব্যবহার করছি:
find . "(" -name "*.m" -or -name "*.mm" -or -name "*.cpp" -or -name "*.swift" ")" -print0 | xargs -0 wc -l
আমি উল্লিখিত হিসাবে সিএলওসি ব্যবহার করেছি এবং এটি ব্যবহার করা মোটামুটি সহজ। এটি একটি পার্ল স্ক্রিপ্ট যা আপনি আপনার প্রকল্প ডিরেক্টরি থেকে যোগ করতে এবং চালাতে পারেন।Nathan Kinsinger
পার্ল ইতিমধ্যে ম্যাক ওএসের অংশ এবং আপনার লিখিত সংখ্যাগুলির সন্ধানের জন্য আপনি এইভাবে স্ক্রিপ্টটি আবেদন করতে পারেন:
perl cloc-1.56.pl ./YourDirectoryWhereYourSourcesAre
এটি এই জাতীয় আদেশ থেকে প্রাপ্ত আউটপুটের একটি উদাহরণ:
176 text files.
176 unique files.
4 files ignored.
http://cloc.sourceforge.net v 1.56 T=2.0 s (86.0 files/s, 10838.0 lines/s)
-------------------------------------------------------------------------------
Language files blank comment code
-------------------------------------------------------------------------------
Objective C 80 3848 1876 11844
C/C++ Header 92 980 1716 1412
-------------------------------------------------------------------------------
SUM: 172 4828 3592 13256
-------------------------------------------------------------------------------
টার্মিনাল.এপ খুলুন, আপনার প্রকল্পের মূল ডিরেক্টরিতে যান এবং এই আদেশটি চালান:
কেবল সুইফ্টের জন্য:
find . \( -iname \*.swift \) -exec wc -l '{}' \+
কেবল ওবজে-সি এর জন্য:
find . \( -iname \*.m -o -iname \*.mm -o -iname \*.h \) -exec wc -l '{}' \+
ওবজে-সি + সুইফ্টের জন্য:
find . \( -iname \*.m -o -iname \*.mm -o -iname \*.h -o -iname \*.swift \) -exec wc -l '{}' \+
ওবজে-সি + সুইফ্ট + সি + সি ++ এর জন্য:
find . \( -iname \*.m -o -iname \*.mm -o -iname \*.c -o -iname \*.cc -o -iname \*.h -o -iname \*.hh -o -iname \*.hpp -o -iname \*.cpp -o -iname \*.swift \) -exec wc -l '{}' \+
টার্মিনাল দ্রুত টিপস:
ls: ডিরেক্টরি ডিরেক্টরি বিষয়বস্তু
সিডি: ডিরেক্টরি পরিবর্তন করুন
স্বাবলম্বনে ট্যাব টিপুন
স্পেসের আগে "\" ব্যাকস্ল্যাশ রাখার কথা মনে রাখবেন
মূল প্রকল্প থেকে একটি ফোল্ডার নামানোর পরামর্শ দিচ্ছি যাতে আপনি ফ্রেমওয়ার্ক থেকে কোড গণনা থেকে মুক্তি পাবেন
টার্মিনালে, প্রকল্প ডিরেক্টরিতে পরিবর্তন করুন এবং চালান:
find . -type f -print0 | xargs -0 cat | wc -l
আপনি যদি কেবলমাত্র কিছু নির্দিষ্ট ফাইল টাইপ চান তবে এর মতো কিছু চেষ্টা করুন
find . -type f -name \*.[ch]* -print0 | xargs -0 cat | wc -l
এক্সকোড পরিসংখ্যানবিদ দেখুন, এটি আপনি যা চান ঠিক তা করে। এটি অন্যান্য আকর্ষণীয় পরিসংখ্যানও সরবরাহ করে তাই মজাদার জন্য এখন এবং তারপরের জন্য উপযুক্ত।
মনে রাখবেন যে এটি প্রকৃত ফোল্ডারগুলির মধ্যে দেখতে পাবে না, যদিও এটি গোষ্ঠীতে দেখাবে। প্রতিক্রিয়া হ'ল আপনি আসল ফোল্ডারগুলি ব্যবহার করছেন না তাই এটি দুর্দান্ত কাজ করবে। আপনি যদি ফোল্ডার ব্যবহার করছেন তবে আপনাকে কেবল প্রতিটি ফোল্ডারে গণনা করতে হবে এবং সেগুলি একসাথে যুক্ত করতে হবে।
দ্রষ্টব্য: ২০১২ সালের জুন পর্যন্ত, এটি Xcode এর সর্বশেষ সংস্করণগুলির সাথে সঠিকভাবে কাজ করে না বলে মনে হচ্ছে।
আপনার প্রকল্পের ভিতরে নিম্নলিখিত কমান্ড কার্যকর করুন:
find . -path ./Pods -prune -o -name "*.swift" -print0 ! -name "/Pods" | xargs -0 wc -l
বা:
find . -path ./Pods -prune -o -name "*[hm]" -print0 ! -name "/Pods" | xargs -0 wc -l
(* পড ফাইলগুলি মোট গণনা থেকে গণনা বাদে)
আপনি যদি টার্মিনালে আপনার প্রকল্পের ডিরেক্টরিতে যান এবং প্রবেশ করুন:
find . "(" -name "*.h" -or -name "*.m" -or -name "*.mm" -or -name "*.hpp" -or -name "*.cpp" -or -name "*.c" -or -name "*.cc" -or -name "*.swift" ")" -print0 | xargs -0 wc -l
এটি আপনাকে একটি প্রকল্প ভাঙ্গা দেবে, পাশাপাশি প্রতিটি ফাইলের জন্য এবং সামগ্রিকভাবে প্রকল্পের জন্য লাইন মোট দেয়।
find . "(" -name "*.swift" ")" -print0 | xargs -0 wc -l
find . "(" -name "RE*.swift" ")" -print0 | xargs -0 wc -l
নোজি-র সংস্করণটি আমার পক্ষে কাজ করে না, তবে এটি একটি:
find . -type f -print0 | xargs -0 cat | wc -l
একটি দ্রুত এবং সহজ উপায়:
একটি রেজেক্স অনুসন্ধান ব্যবহার করুন (নেভিগেটর সন্ধান করুন, সন্ধান করুন> নিয়মিত এক্সপ্রেশন নির্বাচন করুন)।
করুন। \ N
এক্সকোড অনুসন্ধানের স্কোপগুলির সাথে সুবিধাজনকভাবে কাজ করে এবং আপনি যে ধরণের লাইনে গণনা করতে চান তা সহজেই এটিকে কাস্টমাইজ করতে পারেন;)।
আপনি ম্যাকপোর্টের মাধ্যমে এসএলওসকাউন্ট ইনস্টল করতে পারেন । অথবা, আরও অদ্ভুতভাবে, আপনি ডাব্লুসি-ল ব্যবহার করতে পারেন।
আমি এক্সকোডের সাথে পরিচিত নই, তবে আপনার যদি প্রয়োজন কেবল ডিরেক্টরি গাছের মধ্যে থাকা সমস্ত নির্দিষ্ট ফাইলের লাইন সংখ্যা গণনা করা হয় তবে আপনি নিম্নলিখিত কমান্ডটি ব্যবহার করতে পারেন:
find .... match of all those files ... -exec wc -l {} +
অনুসরণ করছেন জশুয়া Nozzi এর উত্তর , এ গনুহ এটি এই ধরণের ফাইলগুলিকে মত হবে জন্য রেগুলার এক্সপ্রেশন:
find . "(" -name "*.m" -or -name "*.mm" -or -name "*.cpp" -or -name "*.swift" ")" -exec wc -l {} +
অথবা এমনকি
find -regex ".*\.\(m\|mm\|cpp\|swift\)$" -exec wc -l {} +
এটি , বা .m
, এ শেষ হওয়া সমস্ত ফাইলের সাথে মেলে নিয়মিত অভিব্যক্তি ব্যবহার করে । ফাইল সন্ধানে রেজেেক্স কীভাবে ব্যবহার করতে হয় সেগুলিতে আপনি এই এক্সপ্রেশন সম্পর্কে আরও তথ্য দেখতে পারেন ।.mm
.cpp
.swift
আপনি যদি ম্যাক ওএস সন্ধানের সাথে কাজ করছেন , তবে আপনার কিছুটা ভিন্ন পদ্ধতির প্রয়োজন, যেমন মন্তব্যগুলিতে মতি শ্নোর ব্যাখ্যা করেছেন :
find -E . -regex ".*\.([hmc]|mm|cp+|swift|pch)$" -exec wc -l {} +
উভয়ই এই আকারে আউটপুট সরবরাহ করবে:
234 ./file1
456 ./file2
690 total
সুতরাং আপনি এটি হয় এটির মতো রাখতে পারেন বা কেবল পাইপ করতে পারেন tail -1
(যা find ... | tail -1
), যাতে আপনি কেবল সর্বশেষ পংক্তিটি সর্বমোট হয়ে যান।
\|
এবং ম্যাকোজে অন্যদের বিষয়ে কোথায় কথা বলছেন তা পরীক্ষা করতে চান । --regex
জিএনইউ অনুসন্ধান (আমি যেটি ব্যবহার করি) এবং ম্যাকোস উভয় ক্ষেত্রেই বৈধ।
পুনরাবৃত্তি করার জন্য দুঃখিত। এটিই সবচেয়ে সহজ উপায় আইএমএইচও:
find /users/<#username#>/documents/folderWithProject/ -type f -exec cp {} /users/<#username#>/documents/folderWithProject/newFolder/ \;
এটি প্রকল্প ফোল্ডার থেকে সমস্ত ফাইল অনুলিপি করবে newFolder
।
newFolder
line-counter
একটি ভাল বিকল্প। এটি সিএলওসি থেকে হালকা এবং অন্যান্য কমান্ডের চেয়ে অনেক বেশি শক্তিশালী এবং ব্যবহার করা সহজ।
একটি দ্রুত ওভারভিউ
এভাবেই আপনি সরঞ্জামটি পান
$ pip install line-counter
line
বর্তমান ডিরেক্টরি অধীনে ফাইল সংখ্যা এবং লাইন গণনা পেতে কমান্ড ব্যবহার করুন (পুনরাবৃত্তভাবে)
$ line
Search in /Users/Morgan/Documents/Example/
file count: 4
line count: 839
আপনি যদি আরও বিশদ চান, কেবল ব্যবহার করুন line -d
।
$ line -d
Search in /Users/Morgan/Documents/Example/
Dir A/file C.c 72
Dir A/file D.py 268
file A.py 467
file B.c 32
file count: 4
line count: 839
এবং এই সরঞ্জামটির সেরা অংশটি হ'ল আপনি এটিতে কনফিগার ফাইলের মতো .gitignore যুক্ত করতে পারেন। আপনি '.gitignore' এ যা করেন ঠিক তেমন ফাইলগুলি গণনা করতে বা তা উপেক্ষা করার জন্য আপনি বিধিগুলি সেট করতে পারেন। হ্যাঁ, এই সরঞ্জামটি কেবল আমার কতগুলি লাইন সহজ করেছে তা জানার জন্য উদ্ভাবিত।
আরও বিবরণ এবং ব্যবহার এখানে: https://github.com/MorganZhang100/line-counter
আমি এই সাধারণ সরঞ্জামটির লেখক। আশা করি এটি কারও সাহায্য করতে পারে।