Sonarqube + Jacoco - 声纳不读取属性的报告路径

时间:2018-04-05 09:35:57

标签: java sonarqube sonarqube-scan

声纳扫描仪 - 3.1

Java 1.7

我尝试配置声纳属性以从多模块项目中获取覆盖范围。覆盖率是在路径下生成的:Module / build / jacoco / test.exec,所以我想根据文档将它添加到sonar.properties文件中:

https://docs.sonarqube.org/display/PLUG/Code+Coverage+by+Unit+Tests+for+Java+Project

In [6]: class DeclarativeABCMeta(DeclarativeMeta, abc.ABCMeta):
   ...:     pass
   ...: 

In [7]: Base = declarative_base(metaclass=DeclarativeABCMeta)

In [8]: class BaseAbstract(abc.ABC):
   ...:     @abc.abstractmethod
   ...:     def foo(self):
   ...:         pass
   ...:     

In [13]: class MyTable(Base, BaseAbstract):
    ...:     __tablename__ = 'mytable'
    ...:     id = Column(Integer, primary_key=True)
    ...:     

In [14]: MyTable()
---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
<ipython-input-14-1686a36a17c6> in <module>()
----> 1 MyTable()

TypeError: "Can't instantiate abstract class MyTable with abstract methods foo"

In [18]: class MyOtherTable(Base, BaseAbstract):
    ...:     __tablename__ = 'myothertable'
    ...:     id = Column(Integer, primary_key=True)
    ...:     def foo(self):
    ...:         return 'bar'
    ...:     

In [19]: MyOtherTable()
Out[19]: <__main__.MyOtherTable at 0x7f01b4b592b0>

我正在尝试使用绝对路径的不同组合,但似乎声纳扫描仪根本看不到这个属性,并且总是查看默认路径。我总是在日志中获取信息:

sonar.java.coveragePlugin=jacoco

sonar.jacoco.reportPaths=**/build/jacoco/*.exec

它确实从文件中读取其他属性,如登录,密码,语言,来源等。

此外,该项目基于Gradle。

2 个答案:

答案 0 :(得分:1)

您使用哪种版本的声纳?如果版本低于6.2,则必须使用sonar.jacoco.reportPath(不含s)。

我认为通配符不被接受,因此如果exec位于Module / build / jacoco / test.exec路径下,则参数应为:sonar.jacoco.reportPath=build/jacoco/test.exec

答案 1 :(得分:0)

如果您使用Gradle构建,则应Analyze with Gradle。具体来说,不需要sonar-project.properties文件。相反,您可以在build.gradle中配置SonarQube插件,其中大部分应该正常工作