Findbugs باستخدام التعليقات التوضيحية JSR305 في Eclipse لا يجد الأخطاء
-
19-09-2019 - |
سؤال
لقد قمت بتجربة التعليقات التوضيحية 305 JSR للاستخدام مع Findbugs، وتحديدا Checkfornull Cheanotation الذي كان من شأنه تجنب الخلل الذي وجدته للتو صنعه للعملاء. لقد أضفت JSR305.JAR و Askingations.jar إلى مسار البناء الخاص بي ولكن البق غير موجود بواسطة Findbugs. أنا أستخدم Eclipse مع البرنامج المساعد Eclipse Findbugs. يوجد أدناه بعض رمز العينة الذي يظهر نفس الخطأ ولكن لا يحدث عندما أقوم بتشغيل FindBoGs أثناء العثور على الخطأ. لقد جربت هذا في الكسوف غاليليو و غانيميد.
public class FindBugsAnnotationsTest {
ArrayList<String> canBeNull;
@CheckForNull
public List<String> getCanBeNull() {
return canBeNull;
}
public void shouldGetFindbugsWarning() {
canBeNull.add("a string");
getCanBeNull().add("a string");
}
}
المحلول
قد يكون هذا واضحا، لكنني أعتقد أن مشكلاتك مع Eclipse (ربما البرنامج المساعد في FindBoGS على وجه الخصوص)، وليس المقصود نفسه.
قد تفكر في تشغيل FindBoGs من سطر الأوامر لإزالة أي مشاكل الكسوف وتأكد من أن لديك FindBoGS تعمل بشكل صحيح بنفسها. إن معرفة كيفية تشغيل Findbugs في وضع مستقل، سيمنحك تراجع عند عدم تكوين IDE الخاص بك بشكل صحيح.
لقد وحفظت شفرة المصدر الخاصة بك في ملف اسمه FindBugsAnnotationsTest.java
, ، وأضاف الواردات ل List
, ArrayList
, ، و CheckForNull
, ، جمعت، وركض وظائف 1.3.9. Findbugs يولد العديد من التحذيرات حول القيم الخالية:
MD NP: محتمل مؤشر مخادع NULL في FindBugSannotationStest.ShouldgeDfindBugswarning () بسبب إرجاع قيمة الأسلوب المسمى غير مخالفات في FindBugSannotationStest.java: AC UWF: MC UWF: FindBugsannotationStest.canbenull في FindBugSannotationStest.java: Dutamline 12] MC NP .
هذه هي الواردات التي أضفتها إلى أعلى FindBugsAnnotationsTest.java
:
import java.util.ArrayList;
import java.util.List;
import edu.umd.cs.findbugs.annotations.CheckForNull;
الأوامر:
javac -d . -classpath ${FINDBUGS_HOME}/lib/findbugs.jar FindBugsAnnotationsTest.java
${FINDBUGS_HOME}/bin/findbugs FindBugsAnnotationsTest.class
أين ${FINDBUGS_HOME}
هو الدليل الذي يتم فيه تثبيت FindBugs 1.3.9. javac
يفترض أن يكون على الطريق.
ملاحظة: استخدمت findbugs.jar
بدلا من annotations.jar
و jsr305.jar
لكنني أحصل على نفس النتائج مع هذا الأمر:
javac -d . -classpath ${FINDBUGS_HOME}/lib/annotations.jar:${FINDBUGS_HOME}/lib/jsr305.jar FindBugsAnnotationsTest.java