LLVM2LCOV(1) LCOV LLVM2LCOV(1)

llvm2lcov - مستندات llvm2lcov

بخش راهنما
1
گروه راهنما
ابزارهای LCOV

تبدیل داده‌های پوشش کد LLVM از profdata در llvm-cov به قالب LCOV

llvm2lcov [--output filename] [--testname name] [options] json_file [json_file ...]

دستور llvm2lcov داده‌های پوشش کد C/C++ در قالب JSON (تولیدشده توسط llvm-cov export -format=text ...) را پیمایش کرده و آن‌ها را به قالب .info در LCOV تبدیل می‌کند.

توجه داشته باشید که LLVM از دو مسیر برای جمع‌آوری داده‌های پوشش کد پشتیبانی می‌کند: مسیری که در این صفحه شرح داده شده است - بر اساس داده‌های پروفایل - و یک مسیر gcov - مشابه آنچه توسط gcc پشتیبانی می‌شود. برای جزئیات بیشتر درباره پشتیبانی از gcov در LLVM، مستندات LLVM را ببینید.

برای تولید داده‌های MC/DC:

  • از LLVM نسخه ۱۸ یا جدیدتر استفاده کنید (نسخه ۲۱ به بالا برای داده‌های تمیزتر MC/DC پیشنهاد می‌شود)
  • ابزاردقیق‌سازی MC/DC را در مراحل کامپایل/پیوند با -fcoverage-mcdc فعال کنید
  • پرچم --mcdc-coverage را به llvm2lcov ارسال کنید

توجه داشته باشید که LLVM هنگام استفاده از مسیر جمع‌آوری داده‌های gcov از معیارهای MC/DC پشتیبانی نمی‌کند.

افزون بر گزینه‌های عمومی که توسط ابزارهای دیگر در مجموعه LCOV پشتیبانی می‌شوند (مانند --comment، --version-script، --ignore-error، --substitute، --exclude و غیره)، این ابزار گزینه‌های زیر را فراهم می‌کند:

داده‌های LCOV در فایل مشخص‌شده نوشته خواهند شد. اگر از این گزینه استفاده نشود، داده‌ها در فایل llvm2lcov.info در دایرکتوری جاری نوشته می‌شوند.
اطلاعات پوشش کد با نام موردآزمون ارائه‌شده مرتبط خواهند شد. ارائه نام الزامی نیست.
گنجاندن داده‌های پوشش شاخه در خروجی.
گنجاندن داده‌های MC/DC در خروجی. نیازمند LLVM نسخه ۱۸ یا بالاتر به همراه فعال بودن ابزاردقیق‌سازی MC/DC در حین کامپایل است.

برای جزئیات سایر گزینه‌ها و تنظیمات پیکربندی، lcov(1) <file://../man/lcov.1.html> و lcovrc(5) <file://../man/lcovrc.5.html> را ببینید.

گردش کار پایه:

# کامپایل به همراه ابزاردقیق‌سازی پوشش کد (شامل MC/DC)
$ clang++ -o myExe -fprofile-inst-generate -fcoverage-mapping \
    -fcoverage-mcdc myCode.cpp
# اجرای موردآزمون‌ها
$ ./myExe ...
# تبدیل داده‌های پروفایل
$ llvm-profdata merge -o myExe.profdata --sparse *.profraw
# برون‌بری داده‌های پوشش در قالب JSON
$ llvm-cov export -format=text -instr-profile=myExe.profdata \
    ./myExe > myExe.json
# تبدیل به قالب LCOV
$ llvm2lcov --output myExe.info --test-name myTestcase \
    --mcdc-coverage --branch-coverage myExe.json ...
# تولید گزارش پوشش کد در قالب HTML
$ genhtml -o html_report myExe.info ...

(... نشان‌دهنده سایر گزینه‌های ابزار است که ممکن است استفاده کنید - برای مثال، برای پالایش و مستثنی‌سازی.)

اجرای همین مثال از طریق gcov به این صورت است:

# کامپایل با ابزاردقیق‌سازی gcov
$ clang++ -o myExe --coverage myCode.cpp
# اجرای موردآزمون‌ها
$ ./myExe ...
# تبدیل به قالب LCOV
#   توجه داشته باشید که گزینه '--gcov-tool' دو بار ذکر شده است: یک بار برای تعیین
#   ابزار و یک بار برای ارسال گزینه ابزار. برای اطلاعات بیشتر
#   به صفحه راهنمای lcov مراجعه کنید.
$ lcov --capture -d . --branch-coverage -o myExe.info --gcov-tool llvm-cov --gcov-tool gcov ...
# تولید گزارش پوشش کد در قالب HTML
$ genhtml -o html_report myExe.info ...

Henry Cox <<henry.cox@mediatek.com>>

lcov(1) <file://../man/lcov.1.html>, genhtml(1) <file://../man/genhtml.1.html>, geninfo(1) <file://../man/geninfo.1.html>, lcovrc(5) <file://../man/lcovrc.5.html>,

2024-2026, LCOV Project

2026-07-07 2.5