मैंने अभी नए ग्रहण 4.2 (जूनो) नल विश्लेषण का उपयोग करना शुरू कर दिया है।क्या जावा विधि को चिह्नित करने का कोई तरीका है (जैसे एनोटेट) जावा विधि कभी वापस नहीं आती है?
इस तरहकोड पर:
x = foo();
if (x == null)
fail("x is null");
return x.bar();
मैं चेतावनी है कि एक्स अशक्त हो सकता है हो रही है। लेकिन यह नहीं हो सकता है, क्योंकि हमेशा विफल रहता है और इसलिए कभी वापस नहीं आता है। (बेहतर अंतर-प्रक्रियात्मक विश्लेषण के साथ यह संभवतः इसे स्वचालित रूप से निर्धारित कर सकता है, लेकिन वर्तमान में ऐसा प्रतीत नहीं होता है।)
जाहिर है, चेतावनी के आसपास कोड को फिर से लिखने के तरीके हैं, लेकिन मुझे क्या चाहिए इंगित करने का एक तरीका (उदाहरण के लिए एक एनोटेशन) जो कभी विफल नहीं होता है।
मैंने @SuppressWarnings ("null") के साथ चेतावनी को दबाने की भी कोशिश की लेकिन यह काम नहीं किया। assert x != null;
(यह मानते हुए आप सेटिंग चालू है शामिल करने के लिए अशक्त विश्लेषण में इस बात पर ज़ोर)
जीसीसी C++ में मैं कर सकते हैं:: void fn __attribute__ ((noreturn))
मैं इस स्थिति के बारे में पता नहीं कर रहा हूँ। क्या आपको इसकी आवश्यकता है, या यह अकादमिक पूछताछ से अधिक है? – BlackVegetable
यह महत्वपूर्ण नहीं है क्योंकि मैं आसानी से इसके आसपास काम कर सकता हूं, लेकिन यह वास्तविक उत्पादन कोड से है। –