2011-06-28 20 views
9

Tôi có một số bài kiểm tra đơn vị cho một ứng dụng, mỗi ứng dụng có khả năng tạo các tệp .gcda. Tôi muốn có thể tạo các tệp .gcda thống nhất đại diện cho phạm vi phủ sóng của toàn bộ bộ thử nghiệm của tôi. Có vẻ như không phải là một cách dễ dàng để làm điều này, nhưng tôi có thể sai, và đó là lý do tại sao tôi hỏi.Có cách nào hợp nhất hai tệp .gcda thành một không?

With gcov, is it possible to merge to .gcda files? trước đây đã được yêu cầu và giải pháp là chuyển đổi thành tệp lcov .info và hợp nhất theo cách đó. Nếu có thể, tôi muốn đầu ra của hoạt động hợp nhất vẫn là một tệp .gcda duy nhất để tôi không bị buộc phải sử dụng lcov.

Trả lời

4

Có mã để hợp nhất .gcda tệp nhưng tiếc là nó được chôn trong libgcov.a được xây dựng như một phần của gcc. Nếu bạn thoát (hoặc theo bất kỳ cách nào gọi __gcov_flush()) một chương trình được biên dịch bao phủ, nó sẽ thực sự phát hiện các tệp .gcda đã tồn tại trước đó, tải chúng, tổng hợp dữ liệu của chúng với dữ liệu của chương trình đang chạy và lưu lại. Tôi không biết bất kỳ công cụ nào cung cấp chức năng đó ở dòng lệnh. Ngay cả với libgcov.a bạn có thể không có móc hữu ích để làm những gì bạn muốn và sẽ phải lấy nguồn từ phân phối gcc-core và sửa đổi nó.

Những gì tôi đã làm trong quá khứ chỉ cần trích xuất tất cả dữ liệu sang nguồn được chú thích (.gcov) và tổng hợp ở cấp đó. Định dạng .gcda có khả năng lưu trữ nhiều hơn thông tin vùng phủ sóng (ví dụ: tổng chi nhánh) và tổng hợp libgcov.a biết cách kết hợp chúng (đối với một số không đơn giản như tổng kết).

1

Tôi vừa tạo dự án thử nghiệm cho thấy, AFAIKT, khi một ứng dụng thử nghiệm chạy liên tục với các tham số khác nhau, thì tệp gcda được cập nhật giữa chạy và chạy gcov một lần (tôi sử dụng gcovr.py). .

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