2015-06-10 14 views
7

Tôi muốn sử dụng các công cụ bảo vệ mã (lcov) trong dự án cmake của mình. Tôi đã đọc ví dụ ở đây https://github.com/bilke/cmake-modules/blob/master/CodeCoverage.cmake Các thử nghiệm được thêm vào trong dự án của tôi bằng cách sử dụng hàm cmake 'add_test()'.Cách bảo hành mã trong cmake

Tôi muốn tạo mục tiêu tùy chỉnh, được gọi là 'test_coverage', khi được gọi để thực thi sẽ chạy tất cả các kiểm tra, thu thập dữ liệu vùng phủ sóng và tạo html (sử dụng genhtml) trong thư mục 'code_coverage'.

Có cách nào tôi có thể nhận danh sách tất cả các bài kiểm tra trong dự án và đường dẫn thư mục của mình không, để trong mục tiêu tùy chỉnh 'test_coverage' tôi có thể thực hiện từng thử nghiệm riêng lẻ và thu thập dữ liệu bảo hiểm của nó?

+0

Từ bản tóm tắt của bạn, tôi giả sử bạn đã đọc [Hướng dẫn chi tiết về cách sử dụng gcov với CMake/CDash?] (Http://stackoverflow.com/questions/13116488/detailed-guide-on-using-gcov-with-cmake -cdash). Nhưng bạn có thấy ví dụ https://github.com/stepcode/stepcode/blob/master/lcov.cmake? 'CTest' biết/có thể trích xuất danh sách kiểm tra trong thư mục đầu ra nhị phân của CMake và với chế độ tập lệnh' ctest -S ... 'bạn có thể tự động hóa toàn bộ quá trình xây dựng, thử nghiệm và thu thập dữ liệu bảo hiểm. – Florian

+1

Cũng hữu ích có thể là [Làm thế nào để chạy ctest sau khi xây dựng dự án của tôi với cmake] (http://stackoverflow.com/questions/15115075/how-to-run-ctest-after-building-my-project-with-cmake) – Florian

+0

@ Florian Tôi không thấy cuộc gọi ctest_coverage trong ví dụ lcov.cmake? Ngoài ra, bạn có nói rằng bạn có thể thực hiện phân tích phạm vi mà không có tập lệnh (-S) không? Bạn có thể chỉ ra một ví dụ về cách làm điều đó không? Tôi quan tâm đến phân tích vùng phủ sóng của tất cả các mục tiêu thử nghiệm tổng hợp. –

Trả lời

0

Bạn có thể thực thi 'ctest -VV' từ dòng lệnh và nếu tất cả các thử nghiệm được tạo bằng cách sử dụng add_test, tất cả sẽ thực thi.

Nếu bạn muốn có một mục tiêu tùy chỉnh xây dựng để làm như vậy, bạn có thể sử dụng mã này:

add_custom_target(run_tests 
    COMMAND "ctest -VV") 

Tôi có một LOT mã cmake cho mã số bảo hiểm và kiểm tra đơn vị để hiển thị, nhưng nó không có ý nghĩa để sao chép/dán ở đây được nêu ra vì nó có vẻ như bạn chỉ mới bắt đầu.

Các vấn đề liên quan