นี่คือความซับซ้อนของคำสั่งที่สามารถเรียกใช้ในผู้ให้บริการโฮสต์ฟรีของ OnWorks โดยใช้เวิร์กสเตชันออนไลน์ฟรีของเรา เช่น Ubuntu Online, Fedora Online, โปรแกรมจำลองออนไลน์ของ Windows หรือโปรแกรมจำลองออนไลน์ของ MAC OS
โครงการ:
ชื่อ
ความซับซ้อน - วัดความซับซ้อนของแหล่งกำเนิด C
เรื่องย่อ
ความซับซ้อน [- ธง] [-ธง [ความคุ้มค่า---ตัวเลือก-ชื่อ- -ความคุ้มค่า]] [ ... ]
ตัวถูกดำเนินการที่โปรแกรมนี้ทำงานอาจถูกระบุบนบรรทัดคำสั่งหรือ
อ่านจากอินพุตมาตรฐาน หนึ่งรายการต่อบรรทัด ในการป้อนข้อมูลนั้น พื้นที่สีขาวนำหน้าและต่อท้าย
ถูกปล้น บรรทัดว่างจะถูกละเว้น อินพุตมาตรฐานอาจไม่ใช่เทอร์มินัล
คำนวณความซับซ้อนของซอร์สโค้ดไม่เพียงแค่นับเส้นทางผ่านโค้ดเท่านั้น แต่
ยังขยายจำนวนบรรทัดด้วยการซ้อนระดับตรรกะ
คำนวณความซับซ้อนของโค้ดโดยนับบรรทัดของแหล่งที่มาที่ไม่ใช่ความคิดเห็นแล้วคูณด้วย
ปัจจัยน้ำหนักลอจิกที่ซ้อนกัน ตามค่าเริ่มต้น 1.9
DESCRIPTION
น้ำหนักของแต่ละคำสั่งคือจำนวนบรรทัดที่คำสั่งใช้ ค่านี้คือ
คูณด้วยน้ำหนักลอจิกที่ซ้อนกัน (1.9 โดยค่าเริ่มต้น) สำหรับแต่ละชั้นของตรรกะ สำหรับ
ตัวอย่าง ตัวอย่างนี้:
ถ้า (foo) {
ถ้า (บาร์) {
บัมเบิล; บาส;
}
}
จะให้คะแนน 11 คะแนนนี้จะถูกปรับขนาดเป็นค่าประมาณ บ่ายโมง ผลลัพธ์หารด้วย 20
และการปัดเศษ คะแนนนี้ "1" ในตอนท้าย บ่ายโมง คะแนนที่สูงขึ้นในขั้นตอนง่าย ๆ และ
ความซับซ้อน ได้คะแนนสูงขึ้นด้วยตรรกะที่ซ้อนกันอย่างลึกซึ้งยิ่งขึ้น
การให้คะแนนสามารถปรับแต่งได้โดยการปรับ --รัง-บทลงโทษ และ --มาตราส่วน- ปัจจัยต่างๆ
ค่าเริ่มต้นถูกปรับเทียบโดยการเปรียบเทียบผลลัพธ์เฉลี่ยของเส้นนับล้าน
ของรหัสที่มีผลลัพธ์ของ บ่ายโมง.
สำหรับวัตถุประสงค์ของโปรแกรมนี้ ขั้นตอนจะถูกระบุโดยชื่อตามด้วย
นิพจน์วงเล็บและวงเล็บปีกกาเปิด มันจบลงด้วยหยิกปิด
รั้งในคอลัมน์ 1
โปรแกรมนี้จะทำหน้าที่ของมันกับทุกไฟล์ที่มีชื่ออยู่ในบรรทัดคำสั่งหรือทุก ๆ
ไฟล์ที่มีชื่ออยู่ในรายการที่อ่านจาก stdin อาร์กิวเมนต์หรือชื่ออินพุตต้องมีอยู่แล้ว
ไฟล์. รายการป้อนข้อมูลอาจมีความคิดเห็นซึ่งเป็นบรรทัดว่างหรือบรรทัดที่ขึ้นต้นด้วย
อักขระ '#'
OPTIONS
-t ขั้นต่ำ, --เกณฑ์=ขั้นต่ำ
เกณฑ์การรายงาน ตัวเลือกนี้ใช้ตัวเลขจำนวนเต็มเป็นอาร์กิวเมนต์ NS
ผิดนัด ขั้นต่ำ สำหรับตัวเลือกนี้คือ:
30
ละเว้นขั้นตอนใด ๆ ที่มีการวัดความซับซ้อนต่ำกว่าเกณฑ์นี้ โดยค่าเริ่มต้น,
ไม่พิมพ์คะแนนความซับซ้อนต่ำกว่า 30 อย่างไรก็ตาม ถ้าฮิสโตแกรมและ
ต้องพิมพ์สถิติ แต่ไม่ใช่คะแนนขั้นตอนแต่ละรายการ จากนั้นจะเป็นค่าเริ่มต้น
ถูกตั้งค่าเป็นศูนย์ กระบวนการที่ต่ำกว่าขีดจำกัดนี้จะไม่ถูกนับในสถิติ
--น่ากลัว-เกณฑ์=ขั้นต่ำ
เกณฑ์การออกศูนย์ ตัวเลือกนี้ใช้ตัวเลขจำนวนเต็มเป็นอาร์กิวเมนต์ NS
ผิดนัด ขั้นต่ำ สำหรับตัวเลือกนี้คือ:
100
หากขั้นตอนใดมีคะแนนสูงกว่าเกณฑ์นี้ โปรแกรมจะออกจากโปรแกรมที่ไม่ใช่
ศูนย์. (4/COMPLEX_EXIT_HORRID_FUNCTION, หากไม่พบปัญหาอื่นๆ) By
ค่าเริ่มต้น โปรแกรมนี้ออกจากศูนย์เว้นแต่หนึ่งฟังก์ชันจะเกินคะแนนที่น่ากลัวของ
100.
-n ปัจจัย, --รัง-บทลงโทษ=ปัจจัย
ตัวคูณคะแนนสำหรับรหัสที่ซ้อนกัน
โครงสร้างทางภาษาศาสตร์จะมีน้ำหนักมากขึ้นตามโครงสร้างที่ซ้อนกันอย่างลึกล้ำ โดย
ค่าเริ่มต้น แต่ละชั้นจะลงโทษด้วยปัจจัยที่ 1.9 อาร์กิวเมนต์ตัวเลือกคือ a
จำนวนจุดลอยตัว บทลงโทษอาจจะ 1 แต่ไม่น้อย
--demi-nesting-บทลงโทษ=ปัจจัย
ตัวคูณคะแนนสำหรับนิพจน์ที่ซ้อนกัน
โดยค่าเริ่มต้น ค่านี้อยู่ครึ่งทางระหว่าง 1.0 และค่าปรับการซ้อน
(โดยเฉพาะสแควร์รูทของการลงโทษการซ้อน) มันหมายถึง
นิพจน์ย่อยในวงเล็บ เช่น
((a > b) && (c > d))
มีนิพจน์ย่อยสองวงเล็บ นี่จะนับได้ 3.5 คะแนน บน
อีกทางหนึ่งนี้:
(a > b && c > d)
มีตัวดำเนินการความสัมพันธ์สองตัวและตัวดำเนินการเชิงตรรกะที่ระดับเดียวกัน เหล่านี้
จำนวนที่ซ้อนกันจะถูกคูณเข้าด้วยกันและให้ผลผลิต 2.5 * 2.5,หรือ 6.25. อย่าทำ
นั่น. มันจะยิ่งแย่ลงถ้าคุณมีตรรกะและหรือในระดับเดียวกัน
-s ปัจจัย, --มาตราส่วน=ปัจจัย
ปัจจัยการปรับขนาดความซับซ้อน ตัวเลือกนี้ใช้ตัวเลขจำนวนเต็มเป็นอาร์กิวเมนต์
โดยค่าเริ่มต้น มาตราส่วนคือ 20 ซึ่งหารคะแนนดิบด้วย 20 นี่คือ
ทำให้เป็นมาตรฐานเพื่อให้สอดคล้องกับ บ่ายโมง คะแนน:
0-9 รหัสบำรุงรักษาได้อย่างง่ายดาย
10-19 บำรุงรักษาด้วยปัญหาเล็กน้อย
20-29 รักษาด้วยความพยายามบางอย่าง
30-39 ยากที่จะรักษารหัส
40-49 ยากที่จะรักษารหัส
50-99 รหัสที่ไม่สามารถรักษาได้
100-199 ทำโค้ดยากอย่างบ้าคลั่ง
200 + ฉันแค่หวังว่าฉันล้อเล่น
คะแนน | ln-ct | nc-lns| ชื่อไฟล์(บรรทัด): proc-name
4707 3815 2838 ลิบ/vasnprintf.c(ค.ศ. 1747): VASNPRINTF
-h, --ฮิสโตแกรม, --ไม่มีฮิสโตแกรม
แสดงฮิสโตแกรมของตัวเลขความซับซ้อน NS ไม่มีฮิสโตแกรม แบบฟอร์มจะปิดการใช้งาน
ตัวเลือก. ตัวเลือกนี้ไม่สามารถตั้งค่าล่วงหน้าด้วยตัวแปรสภาพแวดล้อมหรือin
ไฟล์การเริ่มต้น (rc)
แทนที่จะพิมพ์คะแนนของแต่ละฟังก์ชัน จะมีการพิมพ์สรุปไว้ที่ส่วนท้าย
แสดงจำนวนฟังก์ชันที่มีช่วงคะแนนเฉพาะ เว้นแต่ --คะแนน is
เรียกเฉพาะเจาะจง คะแนนจะไม่พิมพ์ด้วยตัวเลือกนี้ที่ระบุ NS
เกณฑ์การให้คะแนนขั้นต่ำจะลดลงเป็นศูนย์ (0) เว้นแต่ --เกณฑ์ is
ระบุไว้
-c, --คะแนน, --ไม่มีคะแนน
แสดงคะแนนสำหรับแต่ละขั้นตอน NS ไม่มีคะแนน แบบฟอร์มจะปิดการใช้งานตัวเลือก
ตัวเลือกนี้ไม่สามารถตั้งค่าล่วงหน้าด้วยตัวแปรสภาพแวดล้อมหรือในการกำหนดค่าเริ่มต้น (rc)
ไฟล์
หากคุณระบุ --ฮิสโตแกรม, คะแนนส่วนบุคคลจะไม่ปรากฏ ยกเว้นกรณีนี้
มีการระบุตัวเลือก
-I เชือก, --ไม่สนใจ=เชือก
ชื่อขั้นตอนที่จะถูกละเว้น ตัวเลือกนี้อาจปรากฏขึ้นได้ไม่จำกัดจำนวนครั้ง
โค้ดบางตัวมีมาโครที่กำหนดไว้ซึ่งทำให้การวิเคราะห์คำศัพท์สับสน นี้จะทำให้
พวกเขาจะถูกละเลย วิธีอื่นๆ ในการทำให้ฟังก์ชันถูกละเว้นคือ:
ใช้ไวยากรณ์ K&R สำหรับส่วนหัวของขั้นตอน
ใช้แมโครการประมวลผลล่วงหน้าเพื่อประกอบส่วนหัวของโพรซีเดอร์
ลดความซับซ้อนของรหัสของคุณ
โดยทั่วไป สิ่งที่คุณทำซึ่งเปลี่ยนรูปแบบ C ปกติจะทำให้ .สับสน
การวิเคราะห์คำศัพท์ หากไม่เห็นขั้นตอนจะไม่ถูกนับ ถ้า
รหัสภายในขั้นตอนที่เข้าใจยาก คุณอาจจะได้รับความไม่เหมาะสม
ผล.
-H, --ไม่มีหัว
ห้ามพิมพ์หัวคะแนน ตัวเลือกนี้อาจไม่ได้ตั้งค่าไว้ล่วงหน้ากับสภาพแวดล้อม
ตัวแปรหรือในไฟล์เริ่มต้น (rc)
หากสคริปต์กำลังประมวลผลผลลัพธ์การให้คะแนน การแยกวิเคราะห์จะง่ายขึ้นโดยไม่ต้องใช้ a
หัวข้อ. เอาต์พุตฮิสโตแกรมจะมีส่วนหัวเสมอ
-u unifdef-เลือก, --ยูนิฟเดฟ=unifdef-เลือก
เรียกใช้แหล่งที่มาผ่าน ยูนิฟ(1BSD). ตัวเลือกนี้อาจปรากฏเป็นไม่จำกัด
จำนวนครั้ง.
ตัดส่วนของรหัสที่ล้อมรอบด้วย #ถ้า/#สิ้นสุด คำสั่ง ทางเลือก
อาร์กิวเมนต์จะถูกส่งผ่านเป็นอาร์กิวเมนต์ไปยัง ยูนิฟ(1บีเอสดี) โปรแกรม. ตัวอย่างเช่น:
ความซับซ้อน -u-D symbol
จะทำให้ เครื่องหมาย เพื่อกำหนดและลบส่วนของรหัสนำหน้าด้วย #ifndef
เครื่องหมาย แนวทาง
โปรดดูที่ ยูนิฟ เอกสารสำหรับข้อมูลเพิ่มเติม
--unif-exe=โปรแกรม
ระบุโปรแกรม unifdef
โปรแกรมสำรองเพื่อใช้สำหรับ unifdef-ing อินพุต
-i ชื่อไฟล์, --ป้อนข้อมูล=ชื่อไฟล์
ไฟล์รายการไฟล์.
แทนที่จะเป็นรายการบรรทัดคำสั่งของไฟล์อินพุตหรืออ่านจากไฟล์มาตรฐาน
อินพุต อ่านรายการไฟล์จากไฟล์นี้
--ติดตาม=ชื่อไฟล์
ติดตามไฟล์เอาต์พุต
พิมพ์คะแนนระดับกลางไปยังไฟล์การติดตาม
-?, --ช่วยด้วย
แสดงข้อมูลการใช้งานและออก
-!, --เพิ่มเติม-ช่วย
ส่งข้อมูลการใช้งานเพิ่มเติมผ่านเพจเจอร์
-> [cfgfile.cfgfile], --save-ตัวเลือก [=cfgfile.cfgfile]
บันทึกสถานะตัวเลือกไปที่ cfgfile.cfgfile. ค่าเริ่มต้นคือ ล่าสุด ไฟล์การกำหนดค่า
ที่ระบุไว้ใน ทางเลือกที่ ที่ตั้งไว้ล่วงหน้า ส่วนด้านล่าง คำสั่งจะออกหลังจากอัปเดต
ไฟล์ปรับแต่ง
-< cfgfile.cfgfile, --ตัวเลือกการโหลด=cfgfile.cfgfile, --no-โหลดตัวเลือก
โหลดตัวเลือกจาก cfgfile.cfgfile. ไม่มีโหลดตัวเลือก แบบฟอร์มจะปิดการโหลดของ
ไฟล์ config/rc/ini ก่อนหน้า --no-โหลดตัวเลือก ได้รับการจัดการในช่วงต้นของการสั่งซื้อ
-v [{วี|ค|น --รุ่น [{วี|ค|น-
เวอร์ชันเอาต์พุตของโปรแกรมและออก โหมดเริ่มต้นคือ `v' ซึ่งเป็นเวอร์ชันธรรมดา
โหมด `c' จะพิมพ์ข้อมูลลิขสิทธิ์ และ `n' จะพิมพ์ลิขสิทธิ์ฉบับเต็ม
แจ้งให้ทราบ
ทางเลือกที่ ที่ตั้งไว้ล่วงหน้า
ตัวเลือกใด ๆ ที่ไม่ได้ทำเครื่องหมายเป็น ไม่ ที่ตั้งไว้ล่วงหน้า อาจถูกตั้งค่าไว้ล่วงหน้าโดยการโหลดค่าจาก
ไฟล์การกำหนดค่า ("RC" หรือ ".INI") และค่าจากตัวแปรสภาพแวดล้อมที่มีชื่อ:
ซับซ้อน_ or ซับซ้อน
การตั้งค่าล่วงหน้าด้านสิ่งแวดล้อมมีความสำคัญกว่า (ประมวลผลช้ากว่า) การกำหนดค่า
ไฟล์ โฮมอาร์ค ไฟล์คือ "$@/complex.conf""$ HOME""$PROJECT_ROOT/complex.conf", และ
"." หากสิ่งเหล่านี้เป็นไดเร็กทอรีไฟล์ .complexityrc ถูกค้นหาภายใน
ไดเรกทอรีเหล่านั้น
และพวกเรา
ดู ทางเลือกที่ ที่ตั้งไว้ล่วงหน้า สำหรับตัวแปรสภาพแวดล้อมการกำหนดค่า
ใช้ความซับซ้อนทางออนไลน์โดยใช้บริการ onworks.net