हाय मुझे कुछ कोड मिला है जो Findbugs द्वारा NP_GUARANTEED_DEREF समस्या होने के रूप में रिपोर्ट किया गया है। अब मेरे कोड को देखकर मुझे समझ में नहीं आता कि इसमें क्या गलत है, क्या कोई सुझाव दे सकता है कि समस्या क्या है।Findbugs समस्या को ठीक करने के लिए कैसे करें "शून्य मान को संदर्भित करने की गारंटी है" NP_GUARANTEED_DEREF
public void test() {
String var = "";
int index = 2;
if (index == -1) {
var = String.class.getName();
if (var.length() == 0) {
var = null;
}
} else {
var = Integer.class.getName();
if (var.length() == 0) {
var = null;
}
}
if (var == null) {// FINBUGS reports on this line NP_GUARANTEED_DEREF
/*
* There is a statement or branch that if executed guarantees that a value
* is null at this point, and that value that is guaranteed to be
* dereferenced (except on forward paths involving runtime exceptions).
*/
throw new NullPointerException("NULL");
}
}
अब त्रुटि FindBugs में यह बग के लिए कारण के रूप में var = null;
करने के लिए दो कार्य पर प्रकाश डाला गया में ड्रिलिंग, लेकिन मैं काफी क्यों समझ में नहीं आता। ऐसा नहीं है कि मैं वास्तव में var
ऑब्जेक्ट के साथ कुछ भी कर रहा हूं, मैं बस एक नल चेक कर रहा हूं। उदाहरण वास्तविक उत्पादन कोड से लिया गया है लेकिन त्रुटि को पुन: पेश करने के लिए आवश्यक कुछ भी छीन लिया गया है। मैं क्या सोच रहा हूं कि यह झूठी सकारात्मक है या नहीं। और यदि नहीं, तो उचित फिक्स क्या होगा। http://findbugs.sourceforge.net/bugDescriptions.html#NP_GUARANTEED_DEREF
[अद्यतन] है इस मुद्दे को मैं अब इस एक झूठी सकारात्मक रूप में FindBugs बगट्रैकर में Sourceforge पर कड़ी लॉग इन किया है पर कुछ प्रतिक्रिया प्राप्त करने के बाद https://sourceforge.net/tracker/?func=detail&aid=3277814&group_id=96405&atid=614693
:यहाँ के FindBugs बग विस्तार से लिंक है
समस्या के बारे में बातचीत जारी रहेगी।
क्या आपको किसी भी मौके से पहले 'var.equals (शून्य)' था? क्या आप वाकई उस फ़ाइल पर Findbugs को फिर से चला चुके हैं (जो मैं आमतौर पर करता हूं वह है कि मैं "क्लीन बग मार्कर" कहता हूं)। –
हाँ मुझे यकीन है कि मैंने Findbugs को दोबारा शुरू कर दिया है, और नहीं, यह कभी भी 'var.equals (null)' नहीं था, अगर यह था कि यह आसानी से समझ में आता है। जैसा कि jzd ने कहा कि यह गलत नहीं लग रहा है। अगर मुझे और अधिक पुष्टि मिलती है कि यह गलत नहीं दिखता है तो मैं शायद फ़ायरबग – AGrunewald
के साथ एक बग (गलत सकारात्मक) पोस्ट करूंगा। मैं अपने कंप्यूटर पर एक ही एफबी व्यवहार की पुष्टि कर सकता हूं। वास्तव में अजीब लग रहा है। मजाकिया बात यह है कि अगर आपने 'नया न्यूटाइंटर एक्सेप्शन' फेंक दिया है, तो 'नया रनटाइम अपवाद' फेंक दें, बग मार्कर गायब हो जाएगा। –