2015-12-12 7 views
5

क्या स्विफ्ट प्रोजेक्ट में मजबूर अनचाहे का पता लगाने के लिए कोई तरीका है (एक कंपाइलर ध्वज या एक स्क्रिप्ट के माध्यम से)?क्या एक स्विफ्ट परियोजना में मजबूर अनचाहे का पता लगाने का कोई तरीका है?

मैं इस तरह की सामग्री के बारे में सोच रहा हूँ:

let b = a as! B 
let c = a! 
a!.method() 

उदाहरण के लिए var a: A! के लिए झूठी सकारात्मक ट्रिगर के बिना।

+0

आप "[^ \ 1]! [\ S \ p {P}] खोज सकते हैं," इस तरह के उदाहरणों को खोजने के लिए, उदाहरण के लिए अनिश्चित रूप से अनचाहे विकल्प सहित (उनका उपयोग आमतौर पर मजबूर अनचाहे के रूप में खराब है) उपसर्ग '!' ऑपरेटर को छोड़कर बूल और इसी तरह के लिए। मैंने इसे [यहां] पोस्ट किया है (https://www.reddit.com/r/swift/comments/3a3k65/quick_tip_for_every_swift_programmer/) इससे पहले, मुझे बताएं कि क्या यह आपके प्रश्न का उत्तर देता है और मैं इसे उत्तर के रूप में पोस्ट करूंगा – Kametrixom

+0

बल का उपयोग करना अनचाहे ऑपरेटर, बल कास्ट ऑपरेटर ('as! '), या अनदेखा त्रुटि कथन (' कोशिश करें! ') बिना शर्त, सार्वभौमिक रूप से बुरी चीज नहीं है। इसी प्रकार 'ImplicitlyUnwrappedOptional ' प्रकार का उपयोग - ये सभी संरचनाएं हैं जिन्हें सावधानी से विचार किया जा सकता है, सावधानीपूर्वक विचार किया जा सकता है, या उन तरीकों से विचारहीन तरीके से उपयोग किया जा सकता है जो बग पेश कर सकते हैं। मैं अनुदान दूंगा कि पूर्व तीन आईयूओ प्रकार के उपयोग की तुलना में लापरवाही कोडिंग का संकेत है, हालांकि, विशेष रूप से आईयूओ को आईबी आउटलेट जैसे मामलों के लिए आवश्यक (और अनुशंसित) पर विचार करना आवश्यक है। – rickster

उत्तर

1

टिप्पणियों में उल्लेख के अनुसार, पोस्टगिक्स ! के अधिकांश उपयोगों को पकड़ने के लिए एक रेगेक्स खोज तैयार की जा सकती है। (और यदि आप सावधान हैं, तो आपको इसे कोलन-टाइपनाम-बैंग के अधिकांश उपयोगों को अनदेखा करने में सक्षम होना चाहिए ताकि आपको आईयूओ प्रकार की घोषणाओं से शोर न मिले।)

यह जितना अच्छा हो उतना अच्छा है, हालांकि, और यह अपूर्ण है - उदाहरण के लिए, जब भी आप एक एपीआई कॉल करते हैं जो एक आईयूओ प्रकार देता है और वैकल्पिक जांच किए बिना इसके परिणाम तक पहुंचता है, तो आप स्पष्ट रूप से अपने कोड में किसी भी बैंग के बिना बल-अनचाहे कर सकते हैं।

अनचाहे अनचाहे के बारे में चेतावनी देने का प्रयास करने वाले किसी भी उपकरण को स्विफ्ट के प्रकार प्रणाली, व्याकरण और प्रकार अनुमान नियमों का एक बहुत गहरा ज्ञान होना चाहिए। और वास्तव में एकमात्र जगह है जहां आप इस तरह के ज्ञान प्राप्त कर सकते हैं (और यह सही है) कंपाइलर के अंदर है। तो आप शायद filing a feature request to Apple से सबसे अच्छे हैं या open source project के साथ काम कर रहे हैं।

संबंधित मुद्दे

 संबंधित मुद्दे