แพ็คเกจนี้เลิกใช้แล้ว โปรดตรวจสอบการติดเชื้อแทน
Humbug เป็นเฟรมเวิร์กการทดสอบการกลายพันธุ์สำหรับ PHP ขณะนี้อยู่ในระหว่างการพัฒนา แม้ว่าจะใช้งานได้ค่อนข้างดี แต่ก็มีขอบหยาบที่ทีมสมุนกำลังทำงานอย่างหนักเพื่อตอกย้ำ ถ้ามันหลุดออกจากประตูคุณได้รับคำเตือน;)
$ git remote set-url upstream https://github.com/humbug/humbug.git
แทนที่ upstream
ด้วยชื่อของรีโมตที่คุณใช้ในเครื่อง โดยทั่วไปจะใช้ upstream
แต่คุณอาจใช้อย่างอื่นอยู่ คุณอาจใช้ URL อื่นได้ (เช่น [email protected]:mockery/mockery.git) เรียกใช้ git remote -v
เพื่อดูว่าคุณกำลังใช้งานอะไรอยู่
สารบัญ
สรุปแล้ว Mutation Testing คือการทำให้หน่วยการทดสอบของคุณดำเนินการเพื่อเงินของพวกเขา มันเกี่ยวข้องกับการฉีดข้อบกพร่องเล็กๆ น้อยๆ ลงในซอร์สโค้ด จากนั้นตรวจสอบว่าหน่วยทดสอบสังเกตเห็นหรือไม่ หากเป็นเช่นนั้น แสดงว่าการทดสอบหน่วยของคุณ "ทำลาย" การกลายพันธุ์ ถ้าไม่เช่นนั้น แสดงว่าการกลายพันธุ์ได้หลบหนีการตรวจจับไปแล้ว เนื่องจากการทดสอบหน่วยมีจุดมุ่งหมายเพื่อป้องกันการถดถอย การที่การถดถอยจริงผ่านไปโดยไม่มีใครสังเกตเห็นจะเป็นสิ่งที่ไม่ดี!
ในขณะที่ Code Coverage สามารถบอกคุณได้ว่าการทดสอบของคุณกำลังดำเนินการโค้ดใดอยู่ แต่ Mutation Testing มีจุดมุ่งหมายเพื่อช่วยคุณตัดสินว่าการทดสอบหน่วยของคุณทำงานได้ดีเพียงใด และควรปรับปรุงจุดใด
ฉันได้เขียนรายละเอียดเพิ่มเติมเกี่ยวกับสาเหตุที่การทดสอบการกลายพันธุ์จึงคุ้มค่าที่จะมี: การโกหก การโกหกที่สาปแช่ง และการครอบคลุมโค้ด: สู่การทดสอบการกลายพันธุ์
Humbug เป็นโครงการโอเพ่นซอร์สที่ยินดีรับคำขอดึงข้อมูลและปัญหาจากใครก็ตาม ก่อนที่จะเปิดคำขอดึง โปรดอ่านคู่มือการสนับสนุนฉบับย่อของเรา
คุณสามารถโคลนและติดตั้งการพึ่งพาของ Humbug ได้โดยใช้ Composer:
git clone https://github.com/humbug/humbug.git
cd humbug
/path/to/composer.phar install
คำสั่ง humbug อยู่ที่ bin/humbug
หากคุณไม่ต้องการติดตามสาขาหลักโดยตรง คุณสามารถติดตั้ง Humbug phar ได้ดังนี้:
wget https://padraic.github.io/humbug/downloads/humbug.phar
wget https://padraic.github.io/humbug/downloads/humbug.phar.pubkey
# If you wish to make humbug.phar directly executable
chmod +x humbug.phar
บน Windows คุณสามารถดาวน์โหลดได้โดยใช้เบราว์เซอร์หรือจาก Powershell v3 โดยใช้คำสั่งต่อไปนี้โดยที่ wget
เป็นนามแฝงสำหรับ Invoke-WebRequest
:
wget https://padraic.github.io/humbug/downloads/humbug.phar -OutFile humbug.phar
wget https://padraic.github.io/humbug/downloads/humbug.phar.pubkey -OutFile humbug.phar.pubkey
หากคุณติดอยู่กับ Powershell v2:
$client = new-object System.Net.WebClient
$client .DownloadFile( " https://padraic.github.io/humbug/downloads/humbug.phar " , " humbug.phar " )
$client .DownloadFile( " https://padraic.github.io/humbug/downloads/humbug.phar.pubkey " , " humbug.phar.pubkey " )
phar ได้รับการลงนามด้วยคีย์ส่วนตัว openssl คุณจะต้องเก็บไฟล์ pubkey ไว้ข้างไฟล์ phar ตลอดเวลาจึงจะใช้งานได้ ตัวอย่างเช่น หากคุณเปลี่ยนชื่อ humbug.phar
เป็น humbug
ให้เปลี่ยนชื่อคีย์จาก humbug.phar.pubkey
เป็น humbug.pubkey
ด้วย
ขณะนี้การเผยแพร่ phar ดำเนินการด้วยตนเอง ดังนั้นจึงไม่ได้รับการอัปเดตด้วยความถี่เดียวกันกับ git master หากต้องการอัปเดต phar ปัจจุบันของคุณ เพียงเรียกใช้:
./humbug.phar self-update
หมายเหตุ: การใช้ phar หมายความว่าการแก้ไขอาจใช้เวลานานกว่าในการเข้าถึงเวอร์ชันของคุณ แต่รับประกันได้ว่าจะมีเวอร์ชันการพัฒนาที่เสถียรมากขึ้น รหัสสาธารณะจะถูกดาวน์โหลดเพียงครั้งเดียว มันถูกใช้ซ้ำโดยการอัปเดตตัวเองเพื่อตรวจสอบการเผยแพร่ฟาร์ในอนาคต
เมื่อการเผยแพร่เริ่มสู่ความเสถียร จะมีอัลฟ่า เบต้า RC และการเปิดตัวครั้งสุดท้าย ไฟล์ phar ของแทร็กการพัฒนาจะอัปเดตด้วยตนเองโดยอัตโนมัติจนกว่าจะถึงรุ่นเสถียร หากคุณต้องการติดตามฟาร์ระดับการพัฒนาต่อไป คุณจะต้องระบุสิ่งนี้โดยใช้แฟล็กความเสถียรอันใดอันหนึ่ง:
./humbug.phar self-update --dev
หากคุณประสบปัญหาในการอัปเดตตัวเองโดยมีข้อผิดพลาด openssl
หรือ SSL ที่ไม่คาดคิด โปรดตรวจสอบให้แน่ใจว่าคุณได้เปิดใช้งานส่วนขยาย openssl
แล้ว บน Windows คุณสามารถทำได้โดยเพิ่มหรือไม่ใส่เครื่องหมายข้อคิดเห็นบรรทัดต่อไปนี้ในไฟล์ php.ini
สำหรับ PHP บนบรรทัดคำสั่ง (หากแตกต่างจากไฟล์สำหรับเซิร์ฟเวอร์ http ของคุณ):
extension=php_openssl.dll
ข้อผิดพลาด SSL อื่นๆ บางอย่างอาจเกิดขึ้นเนื่องจากใบรับรองขาดหายไป คุณสามารถแก้ไขได้โดยค้นหาตำแหน่งบนระบบของคุณ (เช่น C:/xampp/php/ext/cacert.pem
) หรือดาวน์โหลดสำเนาจาก http://curl.haxx.se/ca/cacert.pem จากนั้นตรวจสอบให้แน่ใจว่าตัวเลือกต่อไปนี้ชี้ไปที่ไฟล์นี้อย่างถูกต้อง:
openssl.cafile=C:/path/to/cacert.pem
เนื่องจากการพึ่งพาของ Humbug ถูกตรึงไว้กับเวอร์ชันล่าสุด การเพิ่ม Humbug ลงใน composer.json อาจทำให้เกิดข้อขัดแย้งได้ แนะนำให้ใช้วิธีการติดตั้งสองวิธีข้างต้นเมื่อเกิดเหตุการณ์เช่นนี้ อย่างไรก็ตาม คุณสามารถติดตั้งได้ทั่วโลกเหมือนกับเครื่องมืออเนกประสงค์อื่นๆ:
composer global require ' humbug/humbug=~1.0@dev '
และถ้าคุณยังไม่ได้ทำก่อนหน้านี้...เพิ่มสิ่งนี้ใน ~/.bash_profile
(หรือ ~/.bashrc
):
export PATH= ~ /.composer/vendor/bin: $PATH
ปัจจุบัน Humbug ทำงานบน PHP 5.4 หรือสูงกว่า
Humbug ยังอยู่ระหว่างการพัฒนา ดังนั้นหากต้องการทำซ้ำ โปรดระวังขอบที่หยาบ
หากต้องการกำหนดค่า humbug ในโครงการของคุณ คุณอาจเรียกใช้:
humbug configure
เครื่องมือนี้จะถามคำถามที่จำเป็นในการสร้างไฟล์การกำหนดค่า Humbug ( humbug.json.dist
)
ในไดเร็กทอรีฐานของโปรเจ็กต์ของคุณให้สร้างไฟล์ humbug.json.dist
:
{
"timeout" : 10 ,
"source" : {
"directories" : [
"src"
]
} ,
"logs" : {
"text" : "humbuglog.txt" ,
"json" : "humbuglog.json"
}
}
คุณสามารถคอมมิต humbug.json.dist
ไปยัง VCS ของคุณและแทนที่มันในเครื่องด้วยไฟล์ humbug.json
แก้ไขตามความเหมาะสม หากคุณไม่ได้กำหนดบันทึกอย่างน้อยหนึ่งรายการ ข้อมูลโดยละเอียดเกี่ยวกับการกลายพันธุ์ที่หลบหนีจะไม่สามารถใช้ได้ บันทึกข้อความเป็นสิ่งที่มนุษย์สามารถอ่านได้ หากมีไฟล์ต้นฉบับอยู่ในไดเร็กทอรีฐาน หรือไฟล์ในไดเร็กทอรีต้นทางต้องถูกยกเว้น คุณสามารถเพิ่มรูปแบบที่ยกเว้นได้ (นี่คือรูปแบบหนึ่งสำหรับไฟล์ในไดเร็กทอรีฐานที่ไม่รวมผู้จำหน่ายผู้แต่งและไดเร็กทอรี Tests):
{
"timeout" : 10 ,
"source" : {
"directories" : [
"."
] ,
"excludes" : [
"vendor" ,
"Tests"
]
} ,
"logs" : {
"text" : "humbuglog.txt"
}
}
หากจากไดเร็กทอรีฐานของโปรเจ็กต์ของคุณ คุณต้องรันการทดสอบจากไดเร็กทอรีอื่น คุณก็สามารถส่งสัญญาณสิ่งนี้ได้เช่นกัน คุณไม่จำเป็นต้องเรียกใช้ Humbug จากไดเร็กทอรีอื่นนอกเหนือจากไดเร็กทอรีฐานของโปรเจ็กต์ของคุณ
{
"chdir" : "tests" ,
"timeout" : 10 ,
"source" : {
"directories" : [
"src"
] ,
}
}
ตรวจสอบให้แน่ใจว่าการทดสอบของคุณทั้งหมดอยู่ในสถานะผ่าน (อนุญาตให้ทดสอบไม่สมบูรณ์และข้ามได้) Humbug จะหยุดทำงานหากการทดสอบใดของคุณล้มเหลว
คำสั่งเวทย์มนตร์ขณะอยู่ในไดเร็กทอรีฐานของโปรเจ็กต์ของคุณ (โดยใช้การดาวน์โหลด PHAR) คือ:
./humbug.phar
หรือถ้าคุณเพิ่งโคลน Humbug:
../humbug/bin/humbug
หรือหากคุณเพิ่ม Humbug เป็นการพึ่งพาผู้แต่งในโครงการของคุณ:
./vendor/bin/humbug
แทนที่จะใช้ php ที่มีส่วนขยาย xdebug คุณสามารถเรียกใช้ Humbug ผ่าน phpdbg ได้:
phpdbg -qrr humbug.phar
หากทุกอย่างเป็นไปด้วยดี คุณจะได้สิ่งที่คล้ายกับ:
_ _ _
| || |_ _ _ __ | |__ _ _ __ _
| __ | || | ' | '_ || / _` |
|_||_|_,_|_|_|_|_.__/_,___, |
|___/
Humbug version 1.0-dev
Humbug running test suite to generate logs and code coverage data...
361 [==========================================================] 28 secs
Humbug has completed the initial test run successfully.
Tests: 361 Line Coverage: 64.86%
Humbug is analysing source files...
Mutation Testing is commencing on 78 files...
(.: killed, M: escaped, S: uncovered, E: fatal error, T: timed out)
.....M.M..EMMMMMSSSSMMMMMSMMMMMSSSE.ESSSSSSSSSSSSSSSSSM..M.. | 60 ( 7/78)
...MM.ES..SSSSSSSSSS...MMM.MEMME.SSSS.............SSMMSSSSM. | 120 (12/78)
M.M.M...TT.M...T.MM....S.....SSS..M..SMMSM...........M...... | 180 (17/78)
MM...M...ESSSEM..MMM.M.MM...SSS.SS.M.SMMMMMMM..SMMMMS....... | 240 (24/78)
.........SMMMSMMMM.MM..M.SSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSS | 300 (26/78)
SSSSSSSSM..E....S......SS......M.SS..S..M...SSSSSSSS....MMM. | 360 (37/78)
.M....MM..SM..S..SSSSSSSS.EM.S.E.M............M.....M.SM.M.M | 420 (45/78)
..M....MMS...MMSSS................M.....EME....SEMS...SSSSSS | 480 (52/78)
SSSSS.EMSSSSM..M.MMMM...SSE.....MMM.M..MM..MSSSSSSSSSSSSSSSS | 540 (60/78)
SSS....SSSSSSSSMM.SSS..........S..M..MSSMS.SSSSSSSSSSSSSSSSS | 600 (68/78)
......E...M..........SM.....M..MMMMM.MMMMMSSSSSSSM.SS
653 mutations were generated:
284 mutants were killed
218 mutants were not covered by tests
131 covered mutants were not detected
17 fatal errors were encountered
3 time outs were encountered
Metrics:
Mutation Score Indicator (MSI): 47%
Mutation Code Coverage: 67%
Covered Code MSI: 70%
Remember that some mutants will inevitably be harmless (i.e. false positives).
Humbug results are being logged as JSON to: log.json
Humbug results are being logged as TEXT to: log.txt
เพื่ออธิบายผลลัพธ์ความคืบหน้าที่อาจเป็นความลับ:
การฆ่า ข้อผิดพลาด และการหมดเวลาทั้งหมดจะนับเป็นการกลายพันธุ์ที่ตรวจพบ เรารายงานข้อผิดพลาดในบันทึกหาก Humbug พบข้อผิดพลาดภายใน กล่าวคือ จุดบกพร่องที่จะรายงานเป็นปัญหาที่นี่!
ผลลัพธ์สรุปตัวอย่างรายงานคะแนนเมตริกจำนวนหนึ่ง:
หากคุณตรวจสอบเกณฑ์ชี้วัดเหล่านี้ ปัญหาที่โดดเด่นคือ MSI ที่ 47% นั้นต่ำกว่าการครอบคลุมโค้ดที่รายงานที่ 65% ถึง 18 จุด การทดสอบหน่วยเหล่านี้มีประสิทธิภาพน้อยกว่า Code Coverage เพียงอย่างเดียวที่สามารถตรวจจับได้
การตีความผลลัพธ์เหล่านี้ต้องมีบริบทบางประการ บันทึกจะแสดงรายการการกลายพันธุ์ที่ตรวจไม่พบทั้งหมดซึ่งแตกต่างกับซอร์สโค้ดต้นฉบับ การตรวจสอบสิ่งเหล่านี้จะให้ข้อมูลเชิงลึกเพิ่มเติมว่าการกลายพันธุ์แบบใดที่ตรวจไม่พบ
Humbug มีตัวเลือกบรรทัดคำสั่งสำหรับบันทึกย่อ นอกเหนือไปจากตัวเลือกปกติที่เกี่ยวข้องกับแอปพลิเคชัน Symfony Console
คุณสามารถกำหนดเกณฑ์การหมดเวลาสำหรับการทดสอบเดี่ยวๆ ได้ด้วยตนเอง:
humbug --timeout=10
หากคุณสนใจเฉพาะการแปลงไฟล์ชุดย่อย คุณสามารถส่งตัวเลือก --file
จำนวนเท่าใดก็ได้ที่มีชื่อไฟล์แบบง่าย globs หรือนิพจน์ทั่วไป โดยพื้นฐานแล้ว สิ่งเหล่านี้จะถูกส่งผ่านไปยังเมธอด name()
ของ Symfony Finder
humbug --file=NewClass.php --file= * Driver.php
วิธีนี้ไม่ได้จำกัดการตรวจสอบ Humbug เริ่มต้นในชุดการทดสอบโดยรวมซึ่งยังคงดำเนินการอย่างเต็มรูปแบบเพื่อให้แน่ใจว่าการทดสอบทั้งหมดผ่านอย่างถูกต้องก่อนดำเนินการต่อ
หากคุณต้องการแปลงไฟล์เฉพาะบางไฟล์ คุณสามารถส่งตัวเลือก --path
จำนวนเท่าใดก็ได้ที่มีชื่อไฟล์พาธแบบเต็ม ตัวเลือกนี้จะถูกส่งไปยังตัวกรอง Closure
ที่จะตัดไฟล์ที่พบโดยใช้ตัวเลือกการกำหนดค่าและ/หรือ --file
กับไฟล์ที่คุณใช้ตัวเลือก --path
humbug --path=src/Data/NewClass.php --path=src/Driver/Driver.php
หมายเหตุ: วิธีนี้ไม่ได้จำกัดการตรวจสอบ Humbug เริ่มต้นในชุดการทดสอบโดยรวม ซึ่งยังคงดำเนินการทั้งหมดเพื่อให้แน่ใจว่าการทดสอบทั้งหมดผ่านไปอย่างถูกต้องก่อนดำเนินการต่อ
การวิเคราะห์ส่วนเพิ่ม (IA) คือโหมดการทดลองที่ยังไม่เสร็จสิ้นซึ่งผลลัพธ์จะถูกแคชไว้ภายในเครื่องระหว่างการรันและนำกลับมาใช้ใหม่เมื่อเหมาะสม ในปัจจุบัน โหมดนี้ทำงานอย่างไร้เดียงสามากโดยกำจัดการทดสอบที่ทั้งไฟล์ที่กำลังกลายพันธุ์และการทดสอบที่เกี่ยวข้องสำหรับบรรทัดที่กลายพันธุ์ไม่ได้รับการแก้ไขตั้งแต่การรันครั้งล่าสุด (ตามที่กำหนดโดยการเปรียบเทียบ SHA1 ของไฟล์ที่เกี่ยวข้อง)
humbug --incremental
โหมด IA นำเสนอประสิทธิภาพที่เพิ่มขึ้นอย่างมากสำหรับฐานโค้ดที่ค่อนข้างเสถียร และคุณสามารถทดสอบและดูว่ามันจะเป็นอย่างไรในชีวิตจริงได้อย่างอิสระ ในอนาคต จำเป็นต้องคำนึงถึงการเปลี่ยนแปลงในไฟล์ที่มีคลาสพาเรนต์ ลักษณะที่นำเข้า และคลาสของการขึ้นต่อกันในทันที ซึ่งทั้งหมดนี้มีผลกระทบต่อพฤติกรรมของออบเจ็กต์ที่กำหนด
IA ใช้แคชถาวรในเครื่อง เช่น /home/padraic/.humbug
การทดสอบการกลายพันธุ์มักดำเนินไปอย่างช้าๆ แนวคิดคือการรันชุดทดสอบของคุณอีกครั้งสำหรับการเปลี่ยนแปลงแต่ละครั้งที่สร้างขึ้น เพื่อเร่งความเร็วให้เร็วขึ้น Humbug จะทำสิ่งต่อไปนี้:
แม้ว่าทั้งหมดนี้จะทำให้ Humbug เร็วขึ้น แต่โปรดทราบว่าการทำงานของ Humbug จะช้ากว่าการทดสอบหน่วย ชุดการทดสอบ 2 วินาทีอาจต้องใช้เวลา 30 วินาทีในการทดสอบการกลายพันธุ์ หรือ 5 นาที ทุกอย่างขึ้นอยู่กับการทำงานร่วมกันระหว่างบรรทัดของโค้ด จำนวนการทดสอบ ระดับการครอบคลุมของโค้ด และประสิทธิภาพของทั้งโค้ดและการทดสอบ
Humbug ใช้ชุด Mutators พื้นฐาน ซึ่งจะแจ้งให้เราทราบเมื่อโทเค็น PHP หนึ่งๆ สามารถกลายพันธุ์ได้ และยังนำการกลายพันธุ์นั้นไปใช้กับอาร์เรย์ของโทเค็นด้วย
หมายเหตุ: ซอร์สโค้ดที่เก็บไว้ภายในฟังก์ชัน (แทนที่จะเป็นวิธีการเรียน) จะไม่กลายพันธุ์ในขณะนี้
เลขคณิตไบนารี:
ต้นฉบับ | กลายพันธุ์ | ต้นฉบับ | กลายพันธุ์ |
---|---|---|---|
- | - | - | - |
- | - | - | - |
- | - | - | - |
- | - | - | - |
- | - | - | - |
- | - | - | - |
- | - | - | |
- | - | - | - |
- | - | - | - |
การทดแทนบูลีน:
สิ่งนี้ครอบคลุมถึงการกลายพันธุ์เชิงตรรกะเป็นการชั่วคราว
ต้นฉบับ | กลายพันธุ์ |
---|---|
จริง | เท็จ |
เท็จ | จริง |
- | - |
- | - |
และ | หรือ |
หรือ | และ |
- |
ขอบเขตตามเงื่อนไข:
ต้นฉบับ | กลายพันธุ์ |
---|---|
- | - |
- | - |
- | - |
- | - |
เงื่อนไขที่ถูกปฏิเสธ:
ต้นฉบับ | กลายพันธุ์ | ต้นฉบับ | กลายพันธุ์ |
---|---|---|---|
- | - | - | - |
- | - | - | - |
- | - | - | - |
- | - | - | - |
- | - |
เพิ่มขึ้น:
ต้นฉบับ | กลายพันธุ์ |
---|---|
- | - |
- | - |
ค่าส่งคืน:
ต้นฉบับ | กลายพันธุ์ | ต้นฉบับ | กลายพันธุ์ |
---|---|---|---|
กลับเป็นจริง; | กลับเท็จ; | กลับ 1.0>; | กลับ -( + 1); |
กลับเท็จ; | กลับเป็นจริง; | ส่งคืน $ นี้; | กลับเป็นโมฆะ; |
กลับ 0; | กลับ 1; | ฟังก์ชันส่งคืน(); | การทำงาน(); กลับเป็นโมฆะ; |
กลับ ; | กลับ 0; | คืนคลาสใหม่ | คลาสใหม่; กลับเป็นโมฆะ; |
กลับ 0.0; | กลับ 1.0; | กลับ ( Anything ); | ( Anything ); กลับเป็นโมฆะ; |
กลับ 1.0; | กลับ 0.0; |
ตัวเลขตามตัวอักษร:
ต้นฉบับ | กลายพันธุ์ |
---|---|
0 | 1 |
1 | 0 |
อินท์ > 1 | อินท์+1 |
ลอย >= 1 / <= 2 | ลอย +1 |
ลอย > 2 | 1 |
หากงบ:
คำสั่ง all if ถูกครอบคลุมโดย mutators ก่อนหน้านี้เป็นส่วนใหญ่ แต่มีกรณีพิเศษ เช่น การใช้ฟังก์ชันเนทิฟหรือวิธีการเรียนโดยไม่มีการเปรียบเทียบหรือการดำเนินการใดๆ เช่น is_int()
หรือ in_array()
สิ่งนี้จะไม่ครอบคลุมถึงฟังก์ชันที่กำหนดไว้ในไฟล์เนื่องจากไม่มีอยู่จนกระทั่งรันไทม์ (มีอย่างอื่นที่ต้องทำ!)
ต้นฉบับ | กลายพันธุ์ |
---|---|
ถ้า(is_int(1)) | ถ้า(!is_int(1)) |
Mutators เพิ่มเติมจะถูกเพิ่มเข้ามาเมื่อเวลาผ่านไป
bin/humbug stats ../my-project/humbuglog.json ../my-project/list-of-classes.txt --skip-killed=yes [-vvv]
แยกวิเคราะห์สถิติจาก humbuglog.json หรือบันทึก JSON ที่มีชื่อที่คุณกำหนดเอง
การอ้างอิง CLI:
humbug stats [humbuglog.json location] [class list location] [--skip-killed = yes] [-vvv]
humbuglog.json location, defaults to ./humbuglog.json
class list location, a path to a text file containing full class names, one per line.
only this files-related stats would be shown
--skip-killed=yes is used to completely skip output of "killed" section
various verbosity levels define amount of info to be displayed:
by default, there's one line per class with amount of mutants killed/escaped/errored/timed out (depending on output section)
-v adds one line per each mutant with line number and method name
-vv adds extra line for each mutant, displaying diff view of line mutant is detected in
-vvv shows full diff with several lines before and after
สิ่งนี้สามารถทดสอบได้บน humbug เองโดยการรันใน dir ของ humbug:
bin/humbug bin/humbug สถิติ [-vvv]
นี่เป็นรายการปัญหาที่ทราบโดยย่อ:
ได้รับความอนุเคราะห์จาก Craig Davis ผู้ซึ่งมองเห็นศักยภาพในพื้นที่เก็บข้อมูลที่ว่างเปล่าครั้งหนึ่ง :P
.:::::::::::...
.::::::::::::::::::::.
.::::::::::::::::::::::::.
::::::::::::::::::::::::::::.
::::::::::::::::::::::::::::::: .,uuu ...
:::::::::::::::::::::::::::::::: dHHHHHLdHHHHb
....:::::::'` ::::::::::::::::::' uHHHHHHHHHHHHHF
.uHHHHHHHHH' ::::::::::::::`. uHHHHHHHHHHHHHP"
HHHHHHHHHHH `:::::::::::',dHHuHHHHHHHHP".g@@g
J"HHHHHHHHHP 4H ::::::::' u$$$.
".HHHHHHHHP" .,uHP :::::' uHHHHHHHHHHP"",e$$$$$c
HHHHHHHF' dHHHHf `````.HHHHHHHHHHP",d$$$$$$$P%C
.dHHHP"" JHHHHbuuuu,JHHHHHHHHP",d$$$$$$$$$e=,z$$$$$$$$ee..
"" .HHHHHHHHHHHHHHHHHP",gdP" ..3$$$Jd$$$$$$$$$$$$$$e.
dHHHHHHHHHHHHHHP".edP " .zd$$$$$$$$$$$"3$$$$$$$$c
`???""??HHHHP",e$$F" .d$,?$$$$$$$$$$$$$F d$$$$$$$$F"
?be.eze$$$$$".d$$$$ $$$E$$$$P".,ede`?$$$$$$$$
4."?$$$$$$$ z$$$$$$ $$$$r.,.e ?$$$$ $$$$$$$$$
'$c "$$$$ .d$$$$$$$ 3$$$.$$$$ 4$$$ d$$$$P"`,,
"""- "$$".`$$" " $$f,d$$P".$$P zeee.zd$$$$$.
ze. .C$C"=^" ..$$$$$$P".$$$'e$$$$$P?$$$$$$
.e$$$$$$$"="$f",c,3eee$$$$$$$$P $$$P'd$$$$"..::.."?$%
4d$$$P d$$$dF.d$$$$$$$$$$$$$$$$f $$$ d$$$" :::::::::.
$$$$$$ d$$$$$ $$$$$$$$$$$$$$$$$$ J$$",$$$'.::::::::::::
"$$$$$$ ?$$$$ d$$$$$$$$$$$$$$$P".dP'e$$$$':::::::::::::::
4$$$$$$c $$$$b`$$$$$$$$$$$P"",e$$",$$$$$' ::::::::::::::::
' ?"?$$$b."$$$$.?$$$$$$P".e$$$$F,d$$$$$F ::::::::::::::::::
"?$$bc."$b.$$$$F z$$P?$$",$$$$$$$ ::::::::::::::::::::
`"$$c"?$$$".$$$)e$$F,$$$$$$$' ::::::::::::::::::::
':. "$b...d$$P4$$$",$$$$$$$" :::::::::::::::::::::
':::: "$$$$$".,"".d$$$$$$$F ::::::::::::::::::::::
:::: be."".d$$$4$$$$$$$$F :::::::::::::::::::::::
:::: "??$$$$$$$$$$?$P" :::::::::::::::::::::::::
:::::: ?$$$$$$$$f .::::::::::::::::::::::::::::
:::::::`"????"".::::::::::::::::::::::::::::::