มีวิธีในการกำหนดจำนวนบรรทัดของโค้ดในโปรเจ็กต์ Xcode หรือไม่? ฉันสัญญาว่าจะไม่ใช้ข้อมูลดังกล่าวเพื่อการวัดผลการบริหารจัดการหรือเพื่อการเปรียบเทียบของพนักงาน ;)
มีวิธีในการกำหนดจำนวนบรรทัดของโค้ดในโปรเจ็กต์ Xcode หรือไม่? ฉันสัญญาว่าจะไม่ใช้ข้อมูลดังกล่าวเพื่อการวัดผลการบริหารจัดการหรือเพื่อการเปรียบเทียบของพนักงาน ;)
คำตอบ:
cloc นับบรรทัดว่าง, บรรทัดความคิดเห็นและบรรทัดทางกายภาพของซอร์สโค้ดในภาษาการเขียนโปรแกรมจำนวนมาก
ฉันเห็นสิ่งนี้ลอยไปมาและใช้มันเอง:
find . "(" -name "*.m" -or -name "*.mm" -or -name "*.cpp" -or -name "*.swift" ")" -print0 | xargs -0 wc -l
ฉันใช้CLOCตามที่กล่าวไว้Nathan Kinsinger
แล้วและใช้งานง่ายพอสมควร มันเป็นสคริปต์ PERL ที่คุณสามารถเพิ่มและเรียกใช้จากไดเรกทอรีโครงการของคุณ
PERL เป็นส่วนหนึ่งของ Mac OS อยู่แล้วและคุณสามารถเรียกใช้สคริปต์ด้วยวิธีนี้เพื่อค้นหาจำนวนบรรทัดที่คุณเขียน:
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
-------------------------------------------------------------------------------
เปิด Terminal.app ไปที่ไดเรกทอรีรากของโครงการและเรียกใช้คำสั่งนี้:
สำหรับ Swift เท่านั้น:
find . \( -iname \*.swift \) -exec wc -l '{}' \+
สำหรับ Obj-C เท่านั้น:
find . \( -iname \*.m -o -iname \*.mm -o -iname \*.h \) -exec wc -l '{}' \+
สำหรับ Obj-C + Swift:
find . \( -iname \*.m -o -iname \*.mm -o -iname \*.h -o -iname \*.swift \) -exec wc -l '{}' \+
สำหรับ Obj-C + Swift + C + C ++:
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: รายการเนื้อหาไดเรกทอรี
cd: เปลี่ยนไดเรกทอรี
กดแท็บเพื่อเติมข้อความอัตโนมัติ
อย่าลืมใส่ "\" แบ็กสแลชก่อนช่องว่าง
ฉันขอแนะนำให้ลงหนึ่งโฟลเดอร์จากโครงการหลักเพื่อให้คุณกำจัดรหัสนับจากกรอบงาน
ในเทอร์มินัลเปลี่ยนเป็นไดเรกทอรีโครงการและเรียกใช้:
find . -type f -print0 | xargs -0 cat | wc -l
หากคุณต้องการไฟล์บางประเภทเท่านั้นลองทำเช่นนั้น
find . -type f -name \*.[ch]* -print0 | xargs -0 cat | wc -l
ลองดู Xcode Statisticsian มันทำสิ่งที่คุณต้องการอย่างแน่นอน นอกจากนี้ยังมีสถิติที่น่าสนใจอื่น ๆ ดังนั้นจึงคุ้มค่าที่จะเรียกใช้เพื่อความสนุกในตอนนี้
โปรดทราบว่าจะไม่ดูภายในโฟลเดอร์จริงแม้ว่าจะดูเป็นกลุ่ม โอกาสที่คุณไม่ได้ใช้โฟลเดอร์จริงดังนั้นมันจะทำงานได้ดี หากคุณใช้โฟลเดอร์คุณก็ต้องนับในแต่ละโฟลเดอร์และรวมเข้าด้วยกัน
หมายเหตุ:ณ เดือนมิถุนายน 2555 ดูเหมือนว่าสิ่งนี้จะทำงานไม่ถูกต้องกับ 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
(* ไม่รวมไฟล์พ็อดนับจากจำนวนทั้งหมด)
หากคุณไปที่ไดเรกทอรีโครงการของคุณใน terminal และป้อน:
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
เวอร์ชันของ Nozzi ไม่เหมาะกับฉัน แต่อันนี้:
find . -type f -print0 | xargs -0 cat | wc -l
วิธีที่ง่ายและรวดเร็ว:
ใช้การค้นหา regex (ค้นหา Navigator เลือกค้นหา> นิพจน์ปกติ)
. \ n
ทำงานร่วมกับขอบเขตการค้นหา Xcode ได้อย่างสะดวกและคุณสามารถปรับแต่งได้ตามประเภทของบรรทัดที่คุณต้องการนับ;)
คุณสามารถติดตั้งSLOCCountผ่าน MacPorts หรือยิ่งหยาบคุณสามารถใช้ wc -l
ฉันไม่คุ้นเคยกับ xcode แต่ถ้าทั้งหมดที่คุณต้องการคือการนับจำนวนบรรทัดจากไฟล์เฉพาะเหล่านั้นทั้งหมดภายในแผนผังไดเรกทอรีคุณอาจใช้คำสั่งต่อไปนี้:
find .... match of all those files ... -exec wc -l {} +
ทำตามคำตอบของ Joshua NozziในGNU พบว่านิพจน์ปกติสำหรับไฟล์ดังกล่าวจะเป็นอย่างไร
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
คุณสามารถดูข้อมูลเพิ่มเติมเกี่ยวกับนิพจน์ผู้ที่อยู่ในวิธีการใช้ regex ในแฟ้มค้นหา
หากคุณกำลังทำงานกับMac OS findคุณต้องมีแนวทางที่แตกต่างออกไปเล็กน้อยดังที่Motti Shneorอธิบายไว้ในความคิดเห็น:
find -E . -regex ".*\.([hmc]|mm|cp+|swift|pch)$" -exec wc -l {} +
ทั้งสองจะให้ผลลัพธ์ในรูปแบบของ:
234 ./file1
456 ./file2
690 total
เพื่อให้คุณสามารถเก็บไว้เป็นอย่างนี้หรือเพียงแค่ไปที่tail -1
(นั่นคือfind ... | tail -1
) เพื่อให้คุณได้รับบรรทัดสุดท้ายเป็นผลรวม
\|
และคนอื่น ๆ ใน MacOS --regex
ใช้ได้ทั้งใน GNU find (อันที่ฉันใช้) และ MacOS
ขออภัยที่ต้องทำซ้ำ นั่นเป็นวิธีที่ง่ายที่สุดใน IMHO:
find /users/<#username#>/documents/folderWithProject/ -type f -exec cp {} /users/<#username#>/documents/folderWithProject/newFolder/ \;
newFolder
นี้จะคัดลอกไฟล์ทั้งหมดจากโฟลเดอร์โครงการ
newFolder
line-counter
เป็นทางเลือกที่ดี มันเบากว่า CLOC และมีประสิทธิภาพมากกว่าและใช้งานง่ายกว่าคำสั่งอื่น ๆ
ภาพรวมอย่างรวดเร็ว
นี่คือวิธีที่คุณได้รับเครื่องมือ
$ 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
ฉันเป็นผู้เขียนเครื่องมือง่ายๆนี้ หวังว่ามันจะช่วยใครซักคน