2015-04-08 8 views
6

SonarQube 5.1 अंक मेरा कोड की समीक्षा के बाद महत्वपूर्ण मुद्दों का एक बहुत कुछ है। हालांकि क्षेत्र में स्वयं वर्ग और संदर्भित वर्ग भी क्रमिक है। संदर्भित वर्ग को कक्षा के माध्यम से धारावाहिक इंटरफ़ेस प्राप्त होता है।मेक "वर्ग" क्षणिक या serializable लेकिन वर्ग serializable

यहाँ मेरी उदाहरण

public class A implements Serializable { 
    private B b; // -> Sonarcube markes this field as not serialzable 
} 

है और वर्ग बी के रूप में

public class B extends C { 
.... 
} 

इस प्रकार

public abstract class C extends D { 
.... 
} 

इस प्रकार परिभाषित किया गया है और क्लास सी परिभाषित किया गया है और वर्ग डी है परिभाषित

public abstract class D implements Serializable { 
    .... 
} 

एक ही प्रोजेक्ट पर FindBugs चलाना इन समस्याओं को नहीं देखता है। मुझे यकीन नहीं है कि यह sonarcube में एक बग है या मेरे कोड में कुछ अन्य समस्याएं हैं (कक्षा सी, डी या कुछ और कक्षाओं में अन्य फ़ील्ड)

क्या किसी के पास कोई सुराग है?

+0

sonarcube में बग। – EJP

+1

क्या आप सोनारक्यूब को सही ढंग से बाइटकोड प्रदान करते हैं? (एक क्यू के साथ) – benzonico

+0

क्या आप इसका मतलब है 'क्या आप सोनारक्यूब को सही ढंग से बाइटकोड प्रदान करते हैं?' ? –

उत्तर

3

यह शायद इसलिए है क्योंकि द्विआधारी फ़ाइलों को सही ढंग से प्रदान न किए है। मेरे सोनारक्यूब कॉन्फ़िगरेशन के साथ मुझे एक ही समस्या थी, फिर मैंने पाया कि Serializable लागू करने वाले वर्ग अलग-अलग मॉड्यूल और/या बाहरी पुस्तकालय में हैं। sonar.java.binaries और sonar.java.libraries के लिए

स्थापना सही मान SonarQube बाइनरी पता लगाने और सही ढंग से निर्धारित किया जाए या नहीं कक्षाएं serializable हैं अनुमति देते हैं।

+0

जहां सोनार क्यूब्स में sonar.java.binaries मौजूद हैं? – Prateek

0

सिर्फ इसलिए कि कुछ आधार वर्ग Serializable लागू कर रहा है स्वचालित रूप से उस मतलब यह नहीं है सभी व्युत्पन्न वर्ग को सही ढंग से serializable कर रहे हैं। व्युत्पन्न कक्षाओं को अपने serialVersionUid को परिभाषित करना चाहिए। इसके अलावा व्युत्पन्न कक्षाएं नए क्षेत्र को पेश कर सकती हैं जिनके मूल्य क्रमिक नहीं हो सकते हैं।

तो जब तक SonarQube एक संकेत है कि लेखक वास्तव में serializable होना करने के लिए वर्ग का मतलब है (संभवतः implements Serializable restating से या serialVersionUid की घोषणा के द्वारा) यह SonarQube Liskovs substition सिद्धांत से इसके बारे में suspicios होने के लिए सही है।

हालांकि महत्वपूर्ण के रूप में वर्गीकरण कुछ ऐसा हो सकता है जिसके लिए चर्चा की आवश्यकता हो। लेकिन यह भी राय के लिए आधारित है।

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