2015-04-14 7 views
5

उथले और गहरे स्थिर विश्लेषण के बीच क्या अंतर है? मैं फिलहाल एक्सकोड का उपयोग कर रहा हूं, और देखा कि एक निर्माण सेटिंग है जो दोनों के बीच अंतर करती है।गहरे और उथले स्थिर विश्लेषण के बीच क्या अंतर है?

मैं सामान्य मामले में इस बारे में उत्सुक हूं, और मैं यह भी सोच रहा हूं कि क्लैंग इस भेद को कैसे लागू करता है।

मैंने कुछ Google-foo की कोशिश की और मुझे कोई जवाब नहीं मिला। मैंने ऐप्पल और क्लैंग डॉक्स के माध्यम से यह देखने के लिए कोशिश की कि क्या वे इसे समझाते हैं लेकिन मुझे कुछ भी नहीं मिला। उम्मीद है कि मेरी खोज में उलझने के लिए मुझे एक स्पष्ट पत्थर याद नहीं आया।

Xcode screenshot of the deep & shallow static analysis options

+0

सटीक स्थिर विश्लेषण एक कठिन समस्या है - मुझे लगता है कि डीप का अनुमान है कि विश्लेषक कठिन काम करता है (जो विश्लेषण को धीमा और संसाधन गहन बनाता है, लेकिन वहां और अधिक सकारात्मक सकारात्मक होंगे और/या कम झूठी नकारात्मक)। – HairyFotr

उत्तर

3

(1) एक talk सेब के इवान चेंग (संकलन तकनीक) से इस बात का संकेत (पृष्ठों को देखने के 157/158) देता है:

  • उथले - त्वरित विश्लेषण
  • गहरे - अधिक पूरी तरह से विश्लेषण

सिफारिश: Always analyze in deep mode as part of qualifications

(2) कुछ और जानकारी आप analyzerOptions के स्रोत कोड में पा सकते हैं वहाँ UserModeKind चर रहा है: कोड में बहुत गहरा देख आप देखते हैं कि एक अंतर का छोड़ना है बिना

00184 /// \brief Describes the kinds for high-level analyzer mode. 
00185 enum UserModeKind { 
00186  UMK_NotSet = 0, 
00187  /// Perform shallow but fast analyzes. 
00188  UMK_Shallow = 1, 
00189  /// Perform deep analyzes. 
00190  UMK_Deep = 2 
00191 }; 
00192 
00193 /// Controls the high-level analyzer mode, which influences the default 
00194 /// settings for some of the lower-level config options (such as IPAMode). 
00195 /// \sa getUserMode 
00196 UserModeKind UserMode; 
00197 
00198 /// Controls the mode of inter-procedural analysis. 
00199 IPAKind IPAMode; 

(टाइमकंस्यूमिंग) अंतर-प्रक्रियात्मक विश्लेषण ...

+0

क्या आप कोई अन्य अंतर प्रदान कर सकते हैं? – whoKnows

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