ทีโคฟ
| ทีโคฟ | |
|---|---|
| นักพัฒนา | บริษัท ออราเคิล คอร์ปอเรชั่น |
| ระบบปฏิบัติการ | โซลาริส |
| แพลตฟอร์ม | สปาร์ค |
| พิมพ์ | ความครอบคลุมของรหัส |
| ใบอนุญาต | ดาวน์โหลดและใช้งานได้ฟรีตามที่ระบุไว้ในข้อตกลงใบอนุญาตผลิตภัณฑ์ Sun Studio |
| เว็บไซต์ | นักพัฒนา.ซัน.คอม |
Tcovเป็น เครื่องมือวิเคราะห์ ความครอบคลุมของซอร์สโค้ดและการสร้างโปรไฟล์แบบคำสั่งต่อคำสั่งสำหรับซอฟต์แวร์ที่เขียนด้วยภาษาFortran , CและC++ Tcov จะสร้างจำนวนครั้งที่แต่ละคำสั่งในโปรแกรมถูกเรียกใช้งานอย่างแม่นยำ และเพิ่มคำอธิบายประกอบในซอร์สโค้ดเพื่อเพิ่มการตรวจสอบ เป็นยูทิลิตี้มาตรฐานที่ให้มาฟรีพร้อมกับซอฟต์แวร์Sun Studio
ยูทิลิตี้ tcov ให้ข้อมูลเกี่ยวกับความถี่ ในการเรียกใช้ส่วนของโค้ด ในโปรแกรมโดยจะสร้างสำเนาของไฟล์ต้นฉบับพร้อมคำอธิบายประกอบเกี่ยวกับความถี่ในการเรียกใช้ สามารถใส่คำอธิบายประกอบได้ทั้งใน ระดับ บล็อกพื้นฐานหรือระดับบรรทัดของโค้ด เนื่องจากคำสั่งในบล็อกพื้นฐานจะถูกเรียกใช้จำนวนครั้งเท่ากัน ดังนั้นจำนวนการเรียกใช้บล็อกพื้นฐานจึงเท่ากับจำนวนครั้งที่แต่ละคำสั่งในบล็อกนั้นถูกเรียกใช้ ยูทิลิตี้ tcov ไม่สร้างข้อมูลใดๆ ที่อิงตามเวลา
คำอธิบาย
tcov ใช้สำหรับวิเคราะห์ความครอบคลุมของการทดสอบของโปรแกรมที่คอมไพล์แล้ว tcov รับไฟล์ต้นฉบับเป็นอาร์กิวเมนต์และสร้างรายการโค้ดต้นฉบับพร้อมคำอธิบายประกอบ แต่ละบล็อกโค้ดพื้นฐาน (หรือแต่ละบรรทัดหากระบุตัวเลือกเฉพาะสำหรับ tcov) จะมีคำนำหน้าเป็นจำนวนครั้งที่ถูกเรียกใช้งาน บรรทัดที่ไม่ถูกเรียกใช้งานจะมีคำนำหน้าเป็น "#####"
ยูทิลิตี้ tcov ยังแสดงสรุปไว้ที่ท้ายรายการโปรแกรมที่มีคำอธิบายประกอบด้วย สถิติสำหรับบล็อกพื้นฐานที่ถูกเรียกใช้งานบ่อยที่สุดจะแสดงตามลำดับความถี่ในการเรียกใช้งาน หมายเลขบรรทัดคือหมายเลขบรรทัดแรกในบล็อกนั้น
tcov มีการใช้งานอยู่สองแบบ:
- การวิเคราะห์ความครอบคลุมแบบเก่า: [ 1 ]ในการใช้งานนี้ หรือที่รู้จักกันในชื่อ tcov ดั้งเดิมคอมไพเลอร์จะสร้างไฟล์ข้อมูลความครอบคลุมที่มีคำต่อท้าย .d สำหรับไฟล์ออบเจ็กต์แต่ละไฟล์เมื่อโปรแกรมเสร็จสิ้น ไฟล์ข้อมูลความครอบคลุมจะได้รับการอัปเดต
- การวิเคราะห์ความครอบคลุมรูปแบบใหม่: [ 2 ]ในการใช้งานนี้ หรือที่รู้จักกันในชื่อ tcov enhanced จะไม่มีการสร้างไฟล์เพิ่มเติมในระหว่างการคอมไพล์ แต่ จะมีการสร้าง ไดเร็กทอรีเพื่อจัดเก็บข้อมูลโปรไฟล์ และไฟล์ข้อมูลความครอบคลุมเพียงไฟล์เดียวชื่อ tcovd จะถูกสร้างขึ้นในไดเร็กทอรีนั้น
การวิเคราะห์การครอบคลุมที่ได้รับการปรับปรุงจะเอาชนะข้อบกพร่องบางประการของเครื่องมือวิเคราะห์ดั้งเดิม เช่น: [ 3 ]
- ให้การสนับสนุนที่สมบูรณ์ยิ่งขึ้นสำหรับภาษา C++
- รองรับโค้ดที่พบในไฟล์เฮดเดอร์ #include และแก้ไขข้อผิดพลาดที่บดบังตัวเลขความครอบคลุมสำหรับคลาสและฟังก์ชันเทมเพลต
- รันไทม์มีประสิทธิภาพกว่ารันไทม์ tcov ดั้งเดิม
- รองรับทุกแพลตฟอร์มที่คอมไพเลอร์รองรับ
การดำเนินการ
ในการสร้างซอร์สโค้ดที่มีคำอธิบายประกอบ จำเป็นต้องทำตามขั้นตอนต่อไปนี้ 3 ขั้นตอน: [ 4 ]
- การคอมไพล์โค้ดด้วยตัวเลือกคอมไพเลอร์ที่เหมาะสม
- ดำเนินการโปรแกรมเพื่อรวบรวมข้อมูลโปรไฟล์
- การเรียกใช้คำสั่ง tcovเพื่อสร้างไฟล์ที่มีคำอธิบายประกอบ
การรันแต่ละครั้งจะสะสมข้อมูลการครอบคลุมเพิ่มเติมลงในไฟล์ข้อมูลโปรไฟล์ ข้อมูลสำหรับไฟล์ออบเจ็กต์แต่ละไฟล์จะถูกตั้งค่าเป็นศูนย์ในครั้งแรกที่โปรแกรมถูกเรียกใช้หลังจากการคอมไพล์ใหม่ ข้อมูลสำหรับโปรแกรมทั้งหมดจะถูกตั้งค่าเป็นศูนย์โดยการลบไฟล์ tcovd [ 5 ]
ขั้นตอนข้างต้นจะอธิบายไว้สำหรับทั้ง tcov แบบดั้งเดิมและแบบปรับปรุงแล้วด้านล่าง:
การวิเคราะห์ความครอบคลุมแบบเก่า
โค้ดต้นฉบับจะถูกคอมไพล์ด้วย ตัวเลือก -xaสำหรับโปรแกรมภาษา C และ ตัวเลือก -aสำหรับโปรแกรม Fortran และ C++ คอมไพเลอร์จะสร้างไฟล์ข้อมูลการครอบคลุมที่มีนามสกุล.dสำหรับไฟล์ออบเจ็กต์แต่ละไฟล์ ไฟล์ข้อมูลการครอบคลุมจะถูกสร้างขึ้นในไดเร็กทอรีที่ระบุโดยตัวแปรสภาพแวดล้อมTCOVDIRหาก ไม่ได้ตั้งค่า TCOVDIRไฟล์ข้อมูลการครอบคลุมจะถูกสร้างขึ้นในไดเร็กทอรีปัจจุบัน การสร้างที่ใส่เครื่องมือข้างต้นจะถูกเรียกใช้ และเมื่อโปรแกรมเสร็จ สิ้น ไฟล์ . dจะได้รับการอัปเดต สุดท้าย คำสั่ง tcov จะถูกเรียกใช้เพื่อสร้างไฟล์ต้นฉบับที่มีคำอธิบายประกอบ ไวยากรณ์ของคำสั่ง tcov มีดังนี้:
ตัวเลือก tcov รายการไฟล์ต้นฉบับ
ในที่นี้source-file-listคือรายการชื่อไฟล์ของซอร์สโค้ด สำหรับรายการตัวเลือกต่างๆ เอาต์พุตเริ่มต้นของ tcov คือชุดไฟล์แต่ละไฟล์ที่มีนามสกุล.tcovซึ่งสามารถเปลี่ยนแปลงได้โดยใช้ ตัวเลือก -o filename
โปรแกรมที่คอมไพล์เพื่อวิเคราะห์ความครอบคลุมของโค้ดสามารถเรียกใช้งานได้หลายครั้ง (โดยอาจมีอินพุตที่แตกต่างกัน) และสามารถใช้ tcov กับโปรแกรมหลังจากเรียกใช้งานแต่ละครั้งเพื่อเปรียบเทียบพฤติกรรมได้
การวิเคราะห์ความครอบคลุมของรูปแบบใหม่
โค้ดต้นฉบับจะถูกคอมไพล์ด้วย ตัวเลือก -xprofile=tcovแตกต่างจากโหมดดั้งเดิม tcov ที่ได้รับการปรับปรุงจะไม่สร้างไฟล์ใดๆ ในระหว่างการคอมไพล์[ 6 ]การสร้างที่มีเครื่องมือข้างต้นจะถูกเรียกใช้ และเมื่อโปรแกรมเสร็จสิ้น จะมีการสร้างไดเร็กทอรีเพื่อจัดเก็บข้อมูลโปรไฟล์ และไฟล์ข้อมูลความครอบคลุมเพียงไฟล์เดียวชื่อtcovdจะถูกสร้างขึ้นในไดเร็กทอรีนั้นtcovdจะเก็บข้อมูลเกี่ยวกับหมายเลขบรรทัดและจำนวนการดำเนินการ เป็นไฟล์ข้อความธรรมดา โดยค่าเริ่มต้น ไดเร็กทอรีจะถูกสร้างขึ้นในตำแหน่งที่โปรแกรมทำงาน และตั้งชื่อตามไฟล์ปฏิบัติการและต่อท้ายด้วย . profileไดเร็กทอรีนี้ยังเป็นที่รู้จักในชื่อบัคเก็ตโปรไฟล์ตำแหน่งของบัคเก็ตโปรไฟล์สามารถถูกแทนที่ได้โดยการตั้งค่า ตัวแปรสภาพแวดล้อม SUN_PROFDATA_DIRหรือSUN_PROFDATAสุดท้าย คำสั่ง tcov จะถูกเรียกใช้เพื่อสร้างไฟล์ต้นฉบับที่มีคำอธิบายประกอบ ไวยากรณ์ของคำสั่ง tcov เหมือนกับคำสั่งดั้งเดิม ยกเว้นตัวเลือก-x ที่บังคับใช้
ตัวเลือก tcov -x profilebucket source-file-list
ความแตกต่างเพียงอย่างเดียวของคำสั่งจาก tcov ดั้งเดิมคือ การเพิ่ม ตัวเลือก -x dir เข้าไป เพื่อระบุว่าเป็น tcov ที่ได้รับการปรับปรุงแล้ว
ตัวอย่าง
โปรแกรมต่อไปนี้เขียนด้วยภาษา Cโดยจะวนลูปตรวจสอบจำนวนเต็มตั้งแต่ 1 ถึง 9 และทดสอบการหารลงตัวด้วยตัวดำเนินการโมดูลัส (%)
#include <stdio.h>int main ( void ) { int i ;สำหรับ( i = 1 ; i < 10 ; i ++ ) { ถ้า( i % 3 == 0 ) printf ( "%d หารด้วย 3 ลงตัว\n " , i ); ถ้า( i % 11 == 0 ) printf ( "%d หารด้วย 11 ลงตัว\n " , i ); }ส่งคืนค่า0 ; }เพื่อให้สามารถทดสอบความครอบคลุมของโค้ดได้ โปรแกรมจะต้องถูกคอมไพล์ด้วยตัวเลือกต่อไปนี้:
สำหรับความครอบคลุมของโค้ดแบบเก่า
cc -xa cov.c
และสำหรับการครอบคลุมรหัสรูปแบบใหม่
ซีซี -xprofile=tcov -o cov cov.c
โดยที่ cov.c คือชื่อไฟล์โปรแกรม คำสั่งนี้จะสร้างไฟล์ปฏิบัติการที่มีคำสั่งเพิ่มเติมเพื่อบันทึกจำนวนครั้งที่แต่ละบรรทัดของโปรแกรมถูกเรียกใช้งาน ตัวเลือก -oใช้สำหรับกำหนดชื่อของไฟล์ปฏิบัติการ จากนั้นต้องเรียกใช้ไฟล์ปฏิบัติการเพื่อสร้างข้อมูลความครอบคลุม การสร้างและตำแหน่งของไฟล์นี้จะแตกต่างกันสำหรับการวิเคราะห์โค้ดแบบเก่าและแบบใหม่ ใน การวิเคราะห์ แบบเก่าไฟล์นี้ที่มีนามสกุล.dซึ่งสร้างขึ้นหลังจากการคอมไพล์ ไม่ว่าจะอยู่ใน ไดเร็กทอรี TCOVDIR หรือไดเร็กทอรีปัจจุบัน จะได้รับการอัปเดตด้วยข้อมูลความครอบคลุม ใน การวิเคราะห์ แบบใหม่ไฟล์ข้อมูลความครอบคลุมชื่อtcovdจะถูกสร้างขึ้นใน ไดเร็กทอรี <ชื่อไฟล์ปฏิบัติการ>.profileข้อมูลนี้สามารถวิเคราะห์ได้โดยใช้คำสั่ง tcov และชื่อของไฟล์ต้นฉบับ:
สำหรับความครอบคลุมของโค้ดแบบเก่า
tcov cov.c
และสำหรับการครอบคลุมรหัสรูปแบบใหม่
tcov -x cov.profile cov.c
อาร์กิวเมนต์เพิ่มเติมใน การวิเคราะห์ รูปแบบใหม่คือprofile bucketคำ สั่ง tcov จะสร้าง ไฟล์ต้นฉบับที่มีคำอธิบายประกอบโดยมีนามสกุลไฟล์ '.tcov' ซึ่งประกอบด้วยจำนวนครั้งที่แต่ละบรรทัดถูกเรียกใช้งาน:
#include <stdio.h>int main ( void ) { 1 int i ;10 สำหรับ( i = 1 ; i < 10 ; i ++ ) { 9 ถ้า( i % 3 == 0 ) 3 พิมพ์( "%d หารด้วย 3 ลงตัว\n " , i ); 9 ถ้า( i % 11 == 0 ) ###### พิมพ์ ( "%d หารด้วย 11 ลงตัว\n", i); 9 }1 คืนค่า0 ; 1 }ยู ทิลิตี้ tcovยังแสดงสรุปไว้ที่ท้ายรายการโปรแกรมที่มีคำอธิบายประกอบด้วย สถิติสำหรับบล็อกพื้นฐาน ที่ถูกเรียกใช้งานบ่อยที่สุด จะแสดงตามลำดับความถี่ในการเรียกใช้งาน หมายเลขบรรทัดคือหมายเลขบรรทัดแรกในบล็อกนั้น
ตัวเลือกบรรทัดคำสั่ง
ยูทิลิตี้บรรทัดคำสั่ง Tcov รองรับตัวเลือกต่อไปนี้ขณะสร้างไฟล์คำอธิบายประกอบจากข้อมูลโปรไฟล์: [ 7 ]
- -a : แสดงจำนวนการเรียกใช้งานสำหรับแต่ละคำสั่ง หากไม่ได้ระบุตัวเลือกนี้ ระบบจะแสดงจำนวนการเรียกใช้งานเฉพาะคำสั่งแรกของบล็อกโค้ด เท่านั้น
- -n : แสดงตารางหมายเลขบรรทัดของคำสั่งที่ถูกเรียกใช้บ่อยที่สุด n คำสั่ง พร้อมจำนวนครั้งที่เรียกใช้
- -o filename : กำหนดเส้นทางการส่งออกไปยังไฟล์ชื่อ filenameแทนที่จะเป็นfile.tcovตัวเลือกนี้สามารถใช้เพื่อกำหนดเส้นทางการส่งออกไปยังเอาต์พุตมาตรฐานได้โดยการระบุ-
- -x dir : ตัวเลือกนี้รองรับในการวิเคราะห์ความครอบคลุมแบบใหม่ หากไม่ได้ระบุตัวเลือกนี้ จะถือว่าเป็นการวิเคราะห์ความครอบคลุมแบบ tcov แบบเก่า
ดูเพิ่มเติม
- Sun Studioชุดคอมไพเลอร์ที่ให้บริการ Tcov
- ใบอนุญาตการพัฒนาและการจัดจำหน่ายทั่วไป
- ความครอบคลุมของรหัส
- Gcovคือเครื่องมือวัดความครอบคลุมของโค้ดที่จัดทำโดยGCC