C++ 声纳库贝公司;基于Qt的信源

C++ 声纳库贝公司;基于Qt的信源,c++,qt,sonarqube,sonar-runner,C++,Qt,Sonarqube,Sonar Runner,我是SonarQube的新手用户。 我试图通过(使用插件)分析一些源CPP文件,这些(源)文件包含一些QT代码段(从QSharedData继承而来&一些QT宏),但结果我给出了SonarQube Runner的一个奇怪错误: 08:28:13.903 WARN - [D:\src\GrainBlitter\modules\CEDualString.h:3]: cannot find the sources for '#include <QSharedData>' 08:28:13.

我是SonarQube的新手用户。 我试图通过(使用插件)分析一些源CPP文件,这些(源)文件包含一些QT代码段(从QSharedData继承而来&一些QT宏),但结果我给出了SonarQube Runner的一个奇怪错误:

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
08:28:13.903 WARN-[D:\src\grainblett\modules\CEDualString.h:3]:找不到“#include”的源
08:28:13.907 WARN-[D:\src\grainblett\modules\CEDualString.h:4]:找不到“#include”的源
08:28:13.930错误-无法分析文件:D:\src\grainblett\modules\CEDualString.cpp
08:28:13.933错误-第3行第39列的分析错误:
-->_uuuclassccedualstring::CCEDualStringData:uuu publicQSharedData
4: {
5:公众:
6:CCEDualStringData(){}
7:CCEDualStringData(const-CCEDualStringData&other):QSharedData(other)、m_ascii(other.m_ascii)
08:28:13.964 WARN-[D:\src\grainblett\modules\CEDualString.h:3]:找不到“#include”的源
08:28:13.969警告-[D:\src\grainblett\modules\CEDualString.h:4]:找不到“#include”的源
08:28:13.987错误-无法分析文件:D:\src\grainblett\modules\CEDualString.h
08:28:13.990错误-第50行第0列的分析错误:
47:inline bool运算符==(const QString&l,const CCEDualString&r){返回l==r.unicode();}
48:
49:Q_DECLARE_元类型(CCEDualString)
-->Q_DECLARE_元类型(CCEDualStringsList)EOF
信息:------------------------------------------------------------------------
信息:执行失败
信息:------------------------------------------------------------------------
总时间:5.571s
最终内存:9M/118M
信息:------------------------------------------------------------------------
错误:执行Sonar runner时出错
错误:无法执行声纳
错误:原因:注释\空白\行
属性文件(sonar project.Properties)如下所示:

# 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
#必需的元数据
sonar.projectKey=grainblet
sonar.projectName=grainblett0x01
sonar.projectVersion=0.0.xx
#指向源目录的逗号分隔路径(必需)
声纳源=模块
#声纳测试=单元测试
#语言,SonarQube<4.2所需
声纳语言=c++
#包含文件的路径
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.1-x64-msvc2012-opengl/Qt-5.3.1-x64-msvc2012-opengl/include/Qt/core
sonar.cxx.cppcheck.path=C:/ProgramFiles(x86)/cppcheck/cppcheck.exe
#源文件的编码
sonar.sourceEncoding=UTF-8
#排除qt创建的文件
sonar.Exclutions=**/ui.*.h
我在[sonar.cxx.include_directories]变量中指定QT include dir,可能不正确?请给出sonar-project.properties文件的示例,并正确链接到QT库。谢谢!
P.S.QSaldDATA头包含在我的页眉

中,这很可能是由于Qt对C++语言的扩展(如果我回忆起来比一些宏还要远)。


我不知道sonar是否可以在本地处理这个问题(或者是否有插件),但作为第一种方法,您可能可以在源代码经过qt的预处理器(moc)转换后运行分析.

部分修复,在“属性”文件中发现配置错误-sonar.cxx.include_目录-应为sonar.cxx.includeDirectories