2010-07-30 38 views
11

FindBugs báo cáo này:Tôi có thể yêu cầu các bộ tìm kiếm bỏ qua các lớp mà tôi không thể thêm vào không?

findbugs: 
[findbugs] Executing findbugs from ant task 
[findbugs] Running FindBugs... 
[findbugs] The following classes needed for analysis were missing: 
[findbugs] com.company.OptionalClass 
[findbugs] Warnings generated: 11 
[findbugs] Missing classes: 2 
[findbugs] Calculating exit code... 
[findbugs] Setting 'missing class' flag (2) 
[findbugs] Setting 'bugs found' flag (1) 
[findbugs] Exit code set to: 3 
[findbugs] Java Result: 3 
[findbugs] Classes needed for analysis were missing 
[findbugs] Output saved to findbugs.xml 
BUILD SUCCESSFUL 

OptionalClass này được tham chiếu từ một lọ của bên thứ ba mà tôi không có mã nguồn, và cho mà tôi không muốn có một phân tích FindBugs. Nó đề cập đến một lớp tôi không có trong classpath của tôi, hoặc bất cứ nơi nào khác. Lớp này có thể được sử dụng trong một số trường hợp nhất định, khi jar của bên thứ ba của chúng tôi được định cấu hình theo một cách nhất định.

Có cách nào để thông báo cho findbugs bỏ qua lớp này không?

Lưu ý rằng nó hoàn thành việc phân tích và tạo báo cáo findbugs.xml, vì vậy đây là vấn đề nhỏ.

Trả lời

3

Thông báo này xuất hiện vì một nơi nào đó trong lớp nhị phân của bạn, bạn đang tham khảo lớp đó. Nó không nhất thiết có nghĩa là FindBugs đang cố gắng phân tích com.company.OptionalClass để báo cáo về nó; thay vào đó, nhiều khả năng FindBugs đã phân tích nó để có thêm thông tin về lớp học tham khảo nó.

Hãy xem xét một số mã nguồn của bạn, mà bạn làm muốn phân tích:

package my.actual.codebase; 
import com.some.third.party.stuff.OptionalClass; 

class ReferencesOptionalClass extends OptionalClass {} 

loại này ví dụ là phổ biến với các lớp kiểm tra, mà tham khảo ví dụ [email protected] nhưng bình JUnit không được bao gồm trong những gì bạn muốn phân tích.

Trong ví dụ trên, bạn muốn có kết quả cho ReferenceOptionalClass, nhưng để nhận được chúng, một số phần của FindBugs cần xem OptionalClass. Nếu nó không thể làm điều đó, bởi vì nó không có ở đó, nó báo cáo rằng lớp học bị thiếu [1]. Khi FindBugs không thể tìm thấy lớp đó, nó thường chỉ hủy bỏ loại phân tích cụ thể mà nó đang cố gắng thực hiện và tiếp tục với phần còn lại của phân tích mà không có vấn đề gì.

Câu trả lời đơn giản là nếu bạn hài lòng với mức độ phân tích FindBugs đang cung cấp cho bạn, thì chỉ cần bỏ qua lỗi.

[1] Lưu ý rằng có khả năng đây thậm chí có thể là tham chiếu chuyển tiếp, tức là mã của bạn bao gồm lớp A, tham chiếu B trong một JAR phụ, sau đó tham chiếu đến OptionalClass.

1

Không, Nhưng bạn không cần nguồn hoặc tạo báo cáo tìm kiếm mã này nếu bạn thêm bình vào phần 'phụ trợ' của tệp dự án tìm kiếm.

+0

Tôi cũng không có các lớp được biên dịch. –

1

Để bỏ qua các lớp của bên thứ ba, xác định một tùy chọn -auxclasspath classpath khi sử dụng dòng lệnh hoặc cung cấp một yếu tố lồng nhau <auxClasspath refid="classpath"> khi sử dụng kiến ​​ nhiệm vụ, nơi jar của bên thứ ba là trong classpath.

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