Nhiều năm trước, Michelle Caise đã gửi một bản vá để tạo các báo cáo về độ phủ mã cho cơ sở mã PostgreSQL, dựa trên tiện ích lcov. Mặc dù tôi không thể tìm thấy bất kỳ bản ghi nào về bản vá thực tế trong kho lưu trữ danh sách gửi thư, nhưng Peter Eisentraut đã cam kết nó một thời gian sau đó và áp dụng các cải tiến tiếp theo sau đó.
Hôm nay, tôi công bố một dịch vụ cộng đồng PostgreSQL mới:các báo cáo về mã được tạo tự động và cập nhật hàng ngày bằng cách sử dụng cơ sở hạ tầng này. Hệ thống này biên dịch nhánh chính, chạy make check-world , và sau đó tạo báo cáo HTML với đưa ra mức độ phù hợp , đó là những gì bạn thấy.
Báo cáo mức độ phù hợp mã mẫu trong src / backend / access / brin
Đối với người đọc không quen với phạm vi bảo hiểm của mã, một bản tóm tắt nhanh:mã được "che" khi có một số bộ thử nghiệm thực hiện nó. Mã không được che phủ có thể dễ dàng bị phá vỡ mà không ai nhận ra, điều này không tốt. Để tránh mã bị phá vỡ một cách âm thầm, điều quan trọng là phần lớn các dòng được kiểm tra. Để có lời giải thích đầy đủ hơn, đây là trang Wikipedia về chủ đề này.
Số liệu thống kê của chúng tôi trong lĩnh vực này trước đây khá tệ; trong khi nhiều tính năng phụ trợ được che phủ tốt, có một số tính năng chỉ được che phủ một phần và những tính năng khác hoàn toàn không được đề cập. Chúng tôi đã và đang cải thiện trong những năm gần đây; trước tiên, chúng tôi đã thêm bộ điều khiển cách ly, cho phép chúng tôi kiểm tra các tính năng chỉ hoạt động trong điều kiện đồng thời. Thứ hai, chúng tôi đã thêm các thử nghiệm TAP, ban đầu là để bao gồm các tiện ích của khách hàng, nhưng sau đó đã được mở rộng để bao gồm những thứ khác như mã phát lại WAL và những thứ khác. Nhưng rõ ràng là chúng ta còn một chặng đường dài phía trước.
Có một số lưu ý cần ghi nhớ. Một là làm cho thế giới kiểm tra target (những gì mà công cụ bao phủ này báo cáo về) không phải là những gì buildfarm chạy, vì vậy có thể xảy ra trường hợp các báo cáo về phạm vi đang chạy nhiều thử nghiệm hơn buildfarm - nghĩa là chúng tôi đang xác nhận phạm vi hoạt động mà không thực sự có. Một vấn đề khác là phạm vi bảo hiểm được chạy trong một nền tảng duy nhất (Debian trên AMD64), vì vậy mã cho các kiến trúc khác không được báo cáo là được bảo hiểm.
Vì vậy, hãy ra ngoài và khám phá! Ý tôi là, hãy khám phá báo cáo, tìm ra những phần nào trong mã của chúng tôi không được đề cập và cố gắng tạo một bài kiểm tra để khắc phục điều đó. Chúng tôi đang chờ đợi bản vá của bạn trong pgsql-hacker với sự quan tâm.
(Ngoài ra:có bất kỳ bài kiểm tra nào mà chúng tôi nên chạy ngoài make-world ? Vui lòng để lại phản hồi trong phần bình luận).