2015-01-19 2 views
2

저는 SonarQube의 초보 사용자입니다. SonarQube (sonar-cxx 플러그인 사용)을 통해 일부 소스 CPP 파일을 분석하려고 시도했지만이 소스 파일에는 일부 QT 코드 조각 (QSharedData & 몇 가지 QT 매크로의 상속)이 포함되어 있습니다. 결과적으로 이상한 오류가 발생합니다. SonarQube 러너 : 나는, QT는 [sonar.cxx.include_directories] 변수에 디렉토리 포함 지정할 수 있습니다SonarQube 및 Qt 기반 출처

# Required metadata 
sonar.projectKey=GrainBlitter 
sonar.projectName=GrainBlitter 0x01 
sonar.projectVersion=0.0.xx 

# Comma-separated paths to directories with sources (required) 
sonar.sources=modules 
#sonar.tests=UnitTests 

# Language, needed for SonarQube < 4.2 
sonar.language=c++ 
# Path to included files 
sonar.cxx.include_directories=C:/Program Files (x86)/Microsoft Visual Studio 11.0/VC/include,D:/Qt/qt-5.3.1-x64-msvc2012-opengl/qt-5.3.1-x64-msvc2012-opengl/include/,D:/Qt/qt-5.3.1-x64-msvc2012-opengl/qt-5.3.1-x64-msvc2012-opengl/include/QtCore 

sonar.cxx.cppcheck.path=C:/Program Files (x86)/Cppcheck/cppcheck.exe 

# Encoding of the source files 
sonar.sourceEncoding=UTF-8 

# exclude qt created files 
sonar.exclusions=**/ui_*.h 

올바르지 않습니다 :

08:28:13.903 WARN - [D:\src\GrainBlitter\modules\CEDualString.h:3]: cannot find the sources for '#include <QSharedData>' 
08:28:13.907 WARN - [D:\src\GrainBlitter\modules\CEDualString.h:4]: cannot find the sources for '#include <QtGlobal>' 
08:28:13.930 ERROR - Unable to parse file: D:\src\GrainBlitter\modules\CEDualString.cpp 
08:28:13.933 ERROR - Parse error at line 3 column 39: 

    --> __classCCEDualString::CCEDualStringData: __publicQSharedData 
    4: { 
    5: __public: 
    6: CCEDualStringData() {} 
    7: CCEDualStringData(const CCEDualStringData& other) : QSharedData(other), m_ascii(other.m_ascii) 

08:28:13.964 WARN - [D:\src\GrainBlitter\modules\CEDualString.h:3]: cannot find the sources for '#include <QSharedData>' 
08:28:13.969 WARN - [D:\src\GrainBlitter\modules\CEDualString.h:4]: cannot find the sources for '#include <QtGlobal>' 
08:28:13.987 ERROR - Unable to parse file: D:\src\GrainBlitter\modules\CEDualString.h 
08:28:13.990 ERROR - Parse error at line 50 column 0: 

    47: inline bool operator == (const QString& l, const CCEDualString& r) { return l == r.unicode(); } 
    48: 
    49: Q_DECLARE_METATYPE(CCEDualString) 
    --> Q_DECLARE_METATYPE(CCEDualStringsList)EOF 

INFO: ------------------------------------------------------------------------ 
INFO: EXECUTION FAILURE 
INFO: ------------------------------------------------------------------------ 
Total time: 5.571s 
Final Memory: 9M/118M 
INFO: ------------------------------------------------------------------------ 
ERROR: Error during Sonar runner execution 
ERROR: Unable to execute Sonar 
ERROR: Caused by: COMMENT_BLANK_LINES 

속성 파일 (sonar-project.properties는)처럼 보인다 ? QT 라이브러리와의 올바른 연결로 sonar-project.properties 파일의 예를 들어주십시오. 감사! 오후 8시 30 분 P.S. QSharedData 헤더가 내 머리글에 포함되어 있습니다.

+1

부분적으로 고정되어 '등록 정보'파일의 구성 오류가 발견되었습니다. - sonar.cxx.include_directories - sonar.cxx.includeDirectories 여야합니다. –

답변

0

이것은 qt가 C++ 언어로 작성된 확장 기능으로 인해 발생했을 가능성이 큽니다 (몇 가지 매크로 이상으로 생각한 경우).

음파 탐지기가 네이티브 (또는 플러그인이있는 경우)를 처리 할 수 ​​있는지 여부는 모르지만 첫 번째 방법으로는 소스에 대한 분석을 qt의 전처리 기 (moc)로 변환 한 후 실행할 수 있습니다.