SonarQube语言sonar.lang.patterns错误

时间:2017-06-07 12:02:26

标签: sonarqube

我们的声纳构建环境详情如下:

  • SonarQube服务器版本 - 5.6.6(64位)。
  • 声纳客户端构建操作系统 - Windows-7(64位)。
  • 声纳扫描仪 - 版本 - 3.0.3.778。
  • 声纳-CXX-插件-0.9.7.jar
  • sonar-csharp-plugin版本-5.11.0.1761。
  • 声纳的目标c-插件-0.5.0-SNAPSHOT.jar
  • 源代码语言:C#和C ++

我们的SonarQube服务器是集中式服务器,所以安装了(cxx-plugin,objective-c-plugin和csharp-plugin)

当前问题:

当我们扫描代码时,如果失败并出现以下错误。由于我们有多种语言(C#和C ++)代码,因此必须一次扫描该语言。

ERROR: Caused by: Language of file 'workspace/HS30/baseclasses/ametex.h' can not be decided as the file matches patterns of both sonar.lang.patterns.c++ : **/*.cxx,**/*.cpp,**/*.cc,**/*.c,**/*.hxx,**/*.hpp,**/*.hh,**/*.h and sonar.lang.patterns.objectivec : **/*.h,**/*.m

sonar.language = cs,c ++(尝试过但没有用)

请帮助我们解决问题。

3 个答案:

答案 0 :(得分:6)

这是一个关于哪种语言"声称" .h个文件。只有一种语言可以声明任何给定的文件扩展名,目前您有两种语言声称.h,因此扫描程序无法确定将这些文件提供给哪些分析器并放弃。

具体来说,从您的错误消息:

the file matches patterns of both sonar.lang.patterns.c++ : **/*.cxx,**/*.cpp,**/*.cc,**/*.c,**/*.hxx,**/*.hpp,**/*.hh,**/*.h and sonar.lang.patterns.objectivec : **/*.h,**/*.m

您同时cxxobjectivec声明.h。您必须从这两个列表中的一个删除扩展名。

转到(全局)管理> [语言]> [语言]文件后缀可修改每种语言所声明的扩展程序,并从一种或两种语言中删除.h

确保不要将这两个字段留空。如果留空,将使用默认值(包括.h)。

答案 1 :(得分:0)

理论上,最简单的方法是配置模式,以便* .h文件只与一种语言匹配,即通过将选项 sonar.lang.patterns.objectivec 设置为空。

实际上,这将是对ObjectiveC的牺牲分析,也许您可​​以重新考虑您的项目结构或运行两个单独扫描两种语言的Sonar构建?

答案 2 :(得分:0)

我执行 sonar.lang.patterns.c="" 来清空 C 扩展,只保留 C++ 扩展。您需要知道要保留哪一个,例如 sonar.lang.patterns.objectivec="" 删除目标 C 的那些。