Gần đây tôi đã bắt đầu sử dụng công cụ phân tích tĩnh tìm kiếm trong một bản dựng java mà tôi đang thực hiện. Báo cáo đầu tiên đã trở lại với vô số cảnh báo Mức độ ưu tiên cao. Là loại người ám ảnh, tôi đã sẵn sàng để đánh bật tất cả chúng ra. Tuy nhiên, tôi phải thiếu một cái gì đó. Tôi nhận được hầu hết các cảnh báo khi so sánh mọi thứ. Chẳng hạn như mã sau:Findbugs và so sánh
public void setSpacesPerLevel(int value)
{
if(value >= 0)
{
spacesPerLevel = value;
}
else
{
spacesPerLevel = 0;
}
}
cảnh báo mức độ ưu tiên cao tại câu lệnh if.
File: Indenter.java, Line: 60, Loại: BIT_AND_ZZ, ưu tiên: Cao, Thể loại: đúng đắn Kiểm tra xem if ((...) & 0) == 0 trong mẫu. Indenter.setSpacesPerLevel (int)
Tôi so sánh int với int, có vẻ như là một điều phổ biến. Tôi nhận được khá nhiều loại lỗi đó với các so sánh đơn giản tương tự.
Tôi có rất nhiều cảnh báo ưu tiên cao khác về những gì dường như là các khối mã đơn giản. Am i thiếu cái gì ở đây? Tôi nhận ra rằng phân tích tĩnh có thể tạo ra các mặt tích cực sai, nhưng các lỗi mà tôi thấy có vẻ quá tầm thường của một trường hợp là dương tính giả.
Điều này khiến tôi gãi đầu.
for(int spaces = 0;spaces < spacesPerLevel;spaces++)
{
result = result.concat(" ");
}
Mà cho các FindBugs sau cảnh báo:
File: Indenter.java, Line: 160, Type: IL_INFINITE_LOOP, Priority: High, Category: CORRECTNESS
There is an apparent infinite loop in sample.Indenter.indent()
This loop doesn't seem to have a way to terminate (other than by perhaps throwing an exception).
Bất kỳ ý tưởng?
Vì vậy, về cơ bản tôi có một số tệp và 50-60 cảnh báo ưu tiên cao tương tự như các cảnh báo ở trên. Tôi đang sử dụng FindBugs 1.3.9 và gọi đó là từ FindBugs lệnh ant
UPDATE: Tôi đã xây dựng này được thực hiện bởi một máy chủ hudson và có mã đang được instrumented bởi Clover cho mã số bảo hiểm. Khi tôi tắt nó đi, tất cả các cảnh báo ưu tiên cao của tôi biến mất. Điều đó có ý nghĩa bây giờ. Cảm ơn vì bạn đã phản hồi.
Đây có thể là vòng lặp vô hạn nếu bạn thay đổi khoảng trắngPerLevel bên trong vòng lặp ví dụ: spacesPerLevel = dấu cách + 2; hoặc giảm không gian. – Anton
Chỉ cần cập nhật câu hỏi để chứa nhiều đoạn mã –
Bạn có đang biên dịch với thông tin gỡ lỗi không? – Anton