Với PMD, nếu bạn muốn bỏ qua một cảnh báo cụ thể, bạn có thể sử dụng // NOPMD
để bỏ qua dòng đó.Có cách nào để bỏ qua một cảnh báo FindBugs duy nhất không?
Có điều gì đó tương tự cho FindBugs không?
Với PMD, nếu bạn muốn bỏ qua một cảnh báo cụ thể, bạn có thể sử dụng // NOPMD
để bỏ qua dòng đó.Có cách nào để bỏ qua một cảnh báo FindBugs duy nhất không?
Có điều gì đó tương tự cho FindBugs không?
Phương pháp tiếp cận ban đầu của FindBugs liên quan đến tệp cấu hình XML aka filters. Điều này thực sự kém thuận tiện hơn so với giải pháp PMD nhưng FindBugs hoạt động trên bytecode, chứ không phải trên mã nguồn, vì vậy các nhận xét rõ ràng không phải là một tùy chọn. Ví dụ:
<Match>
<Class name="com.mycompany.Foo" />
<Method name="bar" />
<Bug pattern="DLS_DEAD_STORE_OF_CLASS_LITERAL" />
</Match>
Tuy nhiên, để giải quyết vấn đề này, FindBugs sau giới thiệu một giải pháp dựa trên annotations (xem SuppressFBWarnings
) mà bạn có thể sử dụng tại lớp hoặc ở cấp phương pháp (thuận tiện hơn so với XML trong quan điểm của tôi). Ví dụ (có thể không phải là người tốt nhất nhưng, tốt, nó chỉ là một ví dụ):
@edu.umd.cs.findbugs.annotations.SuppressFBWarnings(
value="HE_EQUALS_USE_HASHCODE",
justification="I know what I'm doing")
Lưu ý rằng kể từ khi FindBugs 3.0.0 SuppressWarnings
đã phản đối ủng hộ @SuppressFBWarnings
vì tên cuộc đụng độ với Java SuppressWarnings
.
Dưới đây là một ví dụ hoàn chỉnh hơn về một bộ lọc XML (ví dụ trên bằng cách riêng của mình sẽ không làm việc vì nó chỉ cho thấy một đoạn và thiếu <FindBugsFilter>
bắt đầu và thẻ kết thúc):
<FindBugsFilter>
<Match>
<Class name="com.mycompany.foo" />
<Method name="bar" />
<Bug pattern="NP_BOOLEAN_RETURN_NULL" />
</Match>
</FindBugsFilter>
Nếu bạn là bằng cách sử dụng plugin FindBugs của Eclipse, hãy duyệt đến tệp bộ lọc XML của bạn bằng cách sử dụng Window-> Preferences-> Java-> FindBugs-> Filter files-> Exclude filter files-> Add.
Tôi going để leave này 1 here: https://stackoverflow.com/a/14509697/1356953
Please note rằng này works với java.lang.SuppressWarnings
nên no need để dụng một separate annotation.
@SuppressWarnings trên một lĩnh vực duy nhất ngăn chặn FindBugs cảnh báo báo cáo cho rằng tuyên bố lĩnh vực, không phải mọi cảnh báo liên quan đến lĩnh vực đó.
Ví dụ, điều này ngăn chặn các "Field chỉ bao giờ thiết lập để null" cảnh báo:
@SuppressWarnings ("UWF_NULL_FIELD") String s = null; Tôi nghĩ rằng tốt nhất bạn có thể làm là cô lập mã với cảnh báo vào phương pháp nhỏ nhất bạn có thể, sau đó ngăn chặn các cảnh báo trên toàn bộ phương pháp.
'java.lang.SuppressWarnings' không thể hoạt động. Nó có nguồn lưu giữ, do đó, không hiển thị cho findbugs. –
Cập nhật Gradle
dependencies {
compile group: 'findbugs', name: 'findbugs', version: '1.0.0'
}
Xác định vị trí các Báo cáo FindBugs
file: /// Users/your_user/IdeaProjects/projectname/build/báo cáo/FindBugs/main.html
Tìm được thông báo cụ thể
nhập đúng phiên bản của chú thích
import edu.umd.cs.findbugs.annotations.SuppressWarnings;
Thêm chú thích trực tiếp trên mã vi phạm
@SuppressWarnings("OUT_OF_RANGE_ARRAY_INDEX")
Xem ở đây để biết thêm: findbugs Spring Annotation
Bạn có thể sử dụng cú pháp 'biên dịch 'net.sourceforge.findbugs: chú thích: 1.3.2'' thay vì ngắn hơn. –
+1, nhưng vui lòng cập nhật câu trả lời của bạn với: gradle 'testCompile 'com.google.code.findbugs: chú thích: 3.0.0'' và tên chú thích' @ SuppressFBWarnings' –
Như những người khác đề cập, bạn có thể sử dụng @SuppressFBWarnings
Chú thích. Nếu bạn không muốn hoặc không thể thêm một Phụ thuộc vào mã của mình, bạn có thể tự thêm chú thích vào mã của mình, Findbugs không quan tâm đến Gói chú thích là gì.
@Retention(RetentionPolicy.CLASS)
public @interface SuppressFBWarnings {
/**
* The set of FindBugs warnings that are to be suppressed in
* annotated element. The value can be a bug category, kind or pattern.
*
*/
String[] value() default {};
/**
* Optional documentation of the reason why the warning is suppressed
*/
String justification() default "";
}
Nguồn: https://sourceforge.net/p/findbugs/feature-requests/298/#5e88
1 bình luận của bạn: "Tôi biết những gì tôi đang làm" – dhiller
Bonus Câu hỏi: Làm thế nào để tìm giá trị thích hợp cho một cho báo cáo "lỗi" (sử dụng sonar)? – PlanBForOpenOffice
Vấn đề, tất nhiên với việc sử dụng phương pháp chú thích là mã của bạn thay vì nhập khẩu không cần thiết (và phụ thuộc tiếp theo) thư viện Findbugs: ( –