2009-06-04 27 views
48

Có cách nào để loại trừ mã khỏi đưa vào báo cáo bảo hiểm của Cobertura không? Chúng tôi có một số phương pháp không nên được đưa vào báo cáo bảo hiểm và do đó không làm giảm số lượng vùng phủ sóng.Không bao gồm các phương pháp bảo hiểm mã với Cobertura

Tôi biết rằng Clover có chức năng như vậy, nhưng tôi đã không tìm thấy bất cứ điều gì tương tự cho Cobertura.

+0

Hy vọng nó sắp ra mắt. Vấn đề: http://sourceforge.net/tracker/?func=detail&atid=720017&aid=3010530&group_id=130558 và cuộc trò chuyện về một bản phát hành để bao gồm http://sourceforge.net/mailarchive/forum.php?thread_name=0F4966F4B6F55240A08C5F9AD979B3BE07E7EFB3%40MERCMBX16D này. na.SAS.com & forum_name = cobertura-devel –

+0

Xem [bài đăng này] (http://stackoverflow.com/questions/8848585/excluding-java-files-in-sonar-report-through-jenkins/13003357#13003357), Điều này là một lựa chọn để loại trừ mã của cobertura với sonar và jenkins nhưng tôi hy vọng rằng câu trả lời của nó có thể áp dụng cho các dự án không jenkins –

Trả lời

52

Bạn có thể loại trừ các lớp khỏi công cụ. Sau đó, họ không nên xuất hiện trên các báo cáo. Xem các câu hỏi loại trừ bên dưới.

Bạn cũng có thể bỏ qua cuộc gọi đến một số phương pháp. Xem bỏ qua câu hỏi bên dưới.

Nếu bạn đang sử dụng maven, hãy xem maven plugin manual.

<configuration> 
     <instrumentation> 
     <ignores> 
      <ignore>com.example.boringcode.*</ignore> 
     </ignores> 
     <excludes> 
      <exclude>com/example/dullcode/**/*.class</exclude> 
      <exclude>com/example/**/*Test.class</exclude> 
     </excludes> 
     </instrumentation> 
    </configuration> 

Và để xem kiến ​​this.

<cobertura-instrument todir="${instrumented.dir}"> 
    <ignore regex="org.apache.log4j.*" /> 
    <fileset dir="${classes.dir}"> 
    <include name="**/*.class" /> 
    <exclude name="**/*Test.class" /> 
    </fileset> 
    <fileset dir="${jars.dir}"> 
    <include name="my-simple-plugin.jar" /> 
    </fileset> 
</cobertura-instrument> 
+0

Cảm ơn. Có điều gì có thể được thêm vào mã để loại trừ một phương pháp không? Sẽ dễ dàng hơn một danh sách dài trong ANT. Bất kỳ hỗ trợ chú thích nào? – ReneS

+0

Tôi đã tìm kiếm rất nhanh tài liệu Cobertura, nhưng tôi không thể tìm thấy bất kỳ lời nào về chú thích của Cobertura. Vì vậy, có vẻ như bạn cần phải làm việc trên các bài kiểm tra đơn vị của bạn hoặc cấu trúc gói để làm cho danh sách loại trừ của bạn ngắn hơn;) –

+0

Ok, điều đó xác nhận, rằng tôi đã không bỏ lỡ bất cứ điều gì. Hy vọng cho một tính năng ẩn ...tốt, có lẽ chúng ta sẽ sớm có một người. Cảm ơn! – ReneS

3

Cobertura hiện không cung cấp một tính năng như vậy, và cũng như thế Emma (mà chúng tôi sử dụng) mặc dù nó được liệt kê như là một cải tiến sắp tới - mặc dù trong hình thức của một phần mở rộng của quy tắc loại trừ tôi tin chứ không phải là dưới dạng chú thích.

Sẽ rất tiện lợi để che đi những góc không thể tiếp cận được một cách rõ ràng để bạn có thể phấn đấu 100% mà không bị lố bịch. Tôi nghĩ rằng các chú thích có thể là một cách thân thiện hơn để làm điều đó, nhưng chúng phải được đặt tên rõ ràng và dựa trên danh sách các kịch bản có thể chấp nhận được vì tôi sợ một thứ gì khác như '@ExcludeFromCoverage' sẽ được thêm vào một cách hào phóng.

+0

-1 vì không chính xác để viết "cobertura hiện không cung cấp tính năng như vậy". Nó, theo câu trả lời được chấp nhận. –

+0

-1 bởi vì nó sai –

+0

@ Jason, xem câu trả lời của tôi, có thể bạn đang làm cùng một sai lầm tôi. –

21

Điều này đã phá vỡ đầu của tôi một thời gian rồi.

Vấn đề của tôi là tôi đã cài đặt plugin cobertura maven trong phần báo cáo thay vì phần xây dựng.

Cài đặt thiết bị đo và do đó loại trừ các lớp hoặc gói sẽ không được áp dụng nếu bạn không thiết lập trên phần xây dựng, vì vậy hãy chú ý đến điều này.

+0

Đây là câu trả lời đúng! Tôi đã đập đầu của tôi chống lại điều này quá đặt nó trong phần của một Maven 3.0.4 pom. – Melloware

+2

bạn có thể cung cấp một ví dụ không? – add9

+0

@ add9 Kiểm tra: http://www.mojohaus.org/cobertura-maven-plugin/usage.html – sebadagostino

17

Hãy nhớ loại trừ các lớp bên trong.

<exclude>path/to/class/MyClass*.class</exclude> 

Tôi đã mất nhiều tuổi để nhận thấy tôi đã bỏ lỡ dấu hoa thị!

+0

Tìm thấy đây là câu trả lời hữu ích nhất! Rõ ràng ngôi sao trước dấu chấm là điều cần thiết cho việc này để làm việc. Cảm ơn! – pdp

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