【问题标题】:SonarQube & Qt-based sources基于 SonarQube 和 Qt 的资源
【发布时间】:2015-01-19 11:42:09
【问题描述】:

我是 SonarQube 的新手。 我试图通过SonarQube(使用sonar-cxx插件)分析一些源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

属性文件(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.cxx.include_directories] 变量中指定 QT 包含目录,可能不正确?请给我一个正确链接到 QT 库的 sonar-project.properties 文件的示例。谢谢! 附言QSharedData 标头包含在我的标头中

【问题讨论】:

  • 部分修复,发现“属性”文件中的配置错误 - sonar.cxx.include_directories - 应该是 sonar.cxx.includeDirectories

标签: c++ qt sonarqube sonar-runner


【解决方案1】:

这很可能是由于 qt 对 C++ 语言的扩展(如果我记得这比几个宏更进一步)。

我不知道声纳是否可以在本地处理这个问题(或者是否有插件),但作为第一种方法,也许您可​​以在源代码被 qt 的预处理器 (moc) 转换后对源代码运行分析。

【讨论】:

    猜你喜欢
    • 2023-03-25
    • 1970-01-01
    • 2014-09-12
    • 2019-03-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-20
    • 2016-09-05
    相关资源
    最近更新 更多