Findbugs باستخدام التعليقات التوضيحية JSR305 في Eclipse لا يجد الأخطاء

StackOverflow https://stackoverflow.com/questions/1321873

سؤال

لقد قمت بتجربة التعليقات التوضيحية 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
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top