मैं एक पवन नदी कंपाइलर 4 (जीसीसी (सी) और जी ++ (सी ++) का उपयोग कर रहा हूं) और यह बिना किसी समस्या के मेरी सभी परियोजनाओं को संकलित करता है। अब मुझे अपना कोड देखने के लिए कवरिटी स्टेटिक विश्लेषण का उपयोग करना होगा। मैंने विशिष्ट कंपाइलर्स को कॉन्फ़िगर किया है। सी-कोड (जीसीसी) के लिए वहाँ कोई समस्या नहीं हैं और मैं विश्लेषण चला सकते हैं, लेकिन सी ++ के लिए - कोड (छ ++) मैं त्रुटियों की एक बहुत कुछ मिल गया:सी ++ 0x मानक के साथ संगतता स्थिर विश्लेषण कैसे प्राप्त करें?
.../c++config.h", line 214: error #40:
expected an identifier
inline namespace __gnu_cxx_ldbl128 { }
^
.../c++config.h", line 214: error #326:
inline specifier allowed on function declarations only
inline namespace __gnu_cxx_ldbl128 { }
^
.../c++config.h", line 214: error #65:
expected a ";"
inline namespace __gnu_cxx_ldbl128 { }
^
.../include/string.h", line 76: error #312:
cannot overload functions distinguished by return type alone
extern __const void *memchr (__const void *__s, int __c, size_t __n)
^
.../include/string.h", line 116: error #312:
cannot overload functions distinguished by return type alone
extern "C++" __const void *memchr (__const void *__s, int __c, size_t __n)
^
यह कुछ सी होने लगते हैं ++ इनलाइन नेमस्पेस जैसी 11 विशिष्ट विशेषताएं लेकिन कोड इन सुविधाओं का उपयोग नहीं करता है। त्रुटियों के ऊपर एक HelloWorld-कोड के साथ उत्पादित कर रहे हैं:
#include "stdio.h"
#include "util.h"
#include <string>
#include "string.h"
using namespace std;
int main()
{
printf("Hello World, C++ version: %d.%d.%d\r\n",__GNUC__,__GNUC_MINOR__,__GNUC_PATCHLEVEL__);
return 0;
}
मैं जी ++ विकल्प
-std=c++98
साथ C++ मानक स्थापित करने की कोशिश की, लेकिन परिणाम बदल नहीं करता है।
टेस्ट कोड एक बड़ा निर्माण पदानुक्रम में है, लेकिन Coverity के लिए चरणों का इस तरह हैं:
- लक्ष्य और env सेट (विंड नदी 4 लिनक्स)
- स्वच्छ
- cov कॉन्फ़िगर कर सही साथ संकलक निर्देशिका और प्रकार के साथ
- cov-निर्माण "सभी कर" कमांड कि अकेले काम करता
- cov-विश्लेषण
- अगर (no_error) cov-कॉम यह दोष
मैं भी Coverity कॉन्फ़िगर किया है cov-निर्माण (--ppp-translator replace/inline namespace/namespace
) के दौरान "नाम स्थान" के साथ सभी "इनलाइन नाम स्थान" की जगह। इनलाइन त्रुटियों गायब हो गईं लेकिन यह अधिक अधिभार त्रुटियों का उत्पादन करती है और कोई सफल निर्माण नहीं करती है। "सी ++" को उसी तरह से हटाने की भी कोशिश की लेकिन काम नहीं किया हमेशा और अधिक त्रुटियां होती हैं।
क्या किसी को पता है कि यहां समस्या क्या है? और मैं बिना किसी त्रुटि के कवरेज कैसे प्राप्त कर सकता हूं? हो सकता है कि मैं सी ++ मानक शीर्षलेखों को अनदेखा करने के लिए कवरिटी को कॉन्फ़िगर कर सकता हूं लेकिन अब मैं कैसे नहीं?
आप किस जीसीसी का उपयोग कर रहे हैं? 4 पर्याप्त विशिष्ट नहीं है। वैसे भी, आपको [email protected] के साथ एक केस खोलना चाहिए - उन्हें अपना बिल्ड लॉग और प्रीप्रोसेस्ड स्रोत भेजें और वे आपको बताएंगे कि आपको कॉन्फ़िगरेशन में जोड़ने की आवश्यकता है ताकि कॉव-एमिट सफलतापूर्वक संसाधित हो सके। –
विंड्रिवर एनवी। डब्लूआर-लिनक्स-4.0/टूलचेन-4.4-2 9 1 है और जीसीसी जो इस्तेमाल होता है वह संस्करण 4.4.1 है। बिल्ड स्क्रिप्ट के दौरान जीसीसी की डीआईआर शामिल करने का यह संस्करण है। मैं अब भी समर्थन के संपर्क में हूं: समस्या यह है कि विशेष रूप से विंड्रिवर कंपाइलर लिनक्स में समर्थित नहीं है, लेकिन लगभग * किसी भी * जीसीसी कंपाइलर। उनके पास अब प्रीप्रोसेस्ड स्रोत है और इसकी जांच करें। इसके अलावा विंड्रिवर समर्थन अब शामिल है। – Indimental
को कवरिटी सपोर्ट से जवाब मिला और अब हम एक कामकाज करने की कोशिश कर रहे हैं। – Indimental