【问题标题】:SonarQube ClassNotFoundException for python custom rulepython自定义规则的SonarQube ClassNotFoundException
【发布时间】:2017-04-08 23:18:30
【问题描述】:

我已经配置了我的 SonarQube 服务器和我的 python 项目,以便进行各种分析...(很正常...)

我想添加一条规则,以确保我在所有 python 脚本文件的开头放置了许可证/版权文本。使用 sslr-python-toolkit-1.5 应用程序,我成功创建了规则 XPath,并且还在 SonarQube 服务器上创建并激活了规则。

但是,当我启动声纳分析时,我有一个堆栈跟踪:

ERROR: Error during SonarQube Scanner execution
org.sonar.api.utils.SonarException: Unable to initialize the XPath engine, perhaps because of an invalid query: //FILE_INPUT/STATEMENT[0][@tokenValue[not(contains(.,"''' Copyright .... '''"))]]
        at org.sonar.squidbridge.checks.AbstractXPathCheck.init(AbstractXPathCheck.java:47)
        at org.sonar.squidbridge.AstScanner.scanFiles(AstScanner.java:82)
        at org.sonar.plugins.python.PythonSquidSensor.execute(PythonSquidSensor.java:106)
        at org.sonar.batch.sensor.SensorWrapper.analyse(SensorWrapper.java:57)
        at org.sonar.batch.phases.SensorsExecutor.executeSensor(SensorsExecutor.java:58)
        at org.sonar.batch.phases.SensorsExecutor.execute(SensorsExecutor.java:50)
        at org.sonar.batch.phases.AbstractPhaseExecutor.execute(AbstractPhaseExecutor.java:83)
        at org.sonar.batch.scan.ModuleScanContainer.doAfterStart(ModuleScanContainer.java:192)
        at org.sonar.core.platform.ComponentContainer.startComponents(ComponentContainer.java:142)
        at org.sonar.core.platform.ComponentContainer.execute(ComponentContainer.java:127)
        at org.sonar.batch.scan.ProjectScanContainer.scan(ProjectScanContainer.java:241)
        at org.sonar.batch.scan.ProjectScanContainer.scanRecursively(ProjectScanContainer.java:236)
        at org.sonar.batch.scan.ProjectScanContainer.scanRecursively(ProjectScanContainer.java:234)
        at org.sonar.batch.scan.ProjectScanContainer.doAfterStart(ProjectScanContainer.java:226)
        at org.sonar.core.platform.ComponentContainer.startComponents(ComponentContainer.java:142)
        at org.sonar.core.platform.ComponentContainer.execute(ComponentContainer.java:127)
        at org.sonar.batch.task.ScanTask.execute(ScanTask.java:47)
        at org.sonar.batch.task.TaskContainer.doAfterStart(TaskContainer.java:86)
        at org.sonar.core.platform.ComponentContainer.startComponents(ComponentContainer.java:142)
        at org.sonar.core.platform.ComponentContainer.execute(ComponentContainer.java:127)
        at org.sonar.batch.bootstrap.GlobalContainer.executeTask(GlobalContainer.java:106)
        at org.sonar.batch.bootstrapper.Batch.executeTask(Batch.java:119)
        at org.sonarsource.scanner.api.internal.batch.BatchIsolatedLauncher.execute(BatchIsolatedLauncher.java:62)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:498)
        at org.sonarsource.scanner.api.internal.IsolatedLauncherProxy.invoke(IsolatedLauncherProxy.java:60)
        at com.sun.proxy.$Proxy0.execute(Unknown Source)
        at org.sonarsource.scanner.api.EmbeddedScanner.doExecute(EmbeddedScanner.java:233)
        at org.sonarsource.scanner.api.EmbeddedScanner.runAnalysis(EmbeddedScanner.java:151)
        at org.sonarsource.scanner.cli.Main.runAnalysis(Main.java:110)
        at org.sonarsource.scanner.cli.Main.execute(Main.java:74)
        at org.sonarsource.scanner.cli.Main.main(Main.java:61)
Caused by: java.lang.RuntimeException: org.jaxen.JaxenException: org.jaxen.saxpath.base.XPathReader
        at com.google.common.base.Throwables.propagate(Throwables.java:156)
        at com.sonar.sslr.xpath.api.AstNodeXPathQuery.<init>(AstNodeXPathQuery.java:39)
        at com.sonar.sslr.xpath.api.AstNodeXPathQuery.create(AstNodeXPathQuery.java:103)
        at org.sonar.squidbridge.checks.AbstractXPathCheck.init(AbstractXPathCheck.java:45)
        ... 33 more
Caused by: org.jaxen.JaxenException: org.jaxen.saxpath.base.XPathReader
        at org.jaxen.BaseXPath.<init>(BaseXPath.java:125)
        at org.jaxen.BaseXPath.<init>(BaseXPath.java:142)
        at com.sonar.sslr.xpath.api.AstNodeXPathQuery.<init>(AstNodeXPathQuery.java:37)
        ... 35 more
Caused by: org.jaxen.saxpath.SAXPathException: org.jaxen.saxpath.base.XPathReader
        at org.jaxen.saxpath.helpers.XPathReaderFactory.createReader(XPathReaderFactory.java:152)
        at org.jaxen.saxpath.helpers.XPathReaderFactory.createReader(XPathReaderFactory.java:110)
        at org.jaxen.BaseXPath.<init>(BaseXPath.java:113)
        ... 37 more
Caused by: java.lang.ClassNotFoundException: org.jaxen.saxpath.base.XPathReader
        at org.sonar.classloader.ParentFirstStrategy.loadClass(ParentFirstStrategy.java:39)
        at org.sonar.classloader.ClassRealm.loadClass(ClassRealm.java:87)
        at org.sonar.classloader.ClassRealm.loadClass(ClassRealm.java:76)
        at java.lang.Class.forName0(Native Method)
        at java.lang.Class.forName(Class.java:348)
        at org.jaxen.saxpath.helpers.XPathReaderFactory.createReader(XPathReaderFactory.java:137)
        ... 39 more
  1. 我尝试使用命令行自己启动声纳扫描仪

    /usr/bin/java -cp sslr-python-toolkit-1.5.jar:sonar-scanner-cli-2.8.jar -Dscanner.home=/opt/sonar-scanner -Dproject.home=/home/dev /workspaces/pepyt org.sonarsource.scanner.cli.Main

但结果相同....

  1. 我已将两个 jar 解压缩到一个目录中,没有任何变化...
  2. 经过一番搜索后,我发现了一些关于 SONAR_SCANNER_OPTS 环境变量的 sonar-java-libraries 的帖子...如果使用了未解决问题的环境变量(在声纳运行日志中可见),则事件...
  3. 我把 sslr-python-toolkit-1.5.jar 库放到了我的 sonar 主目录的 lib 目录下,没有任何成功

我没办法了……

如何将 sslr python 库添加到我的声纳扫描器类路径中,以便使用我的自定义规则分析代码?

科曼底

【问题讨论】:

    标签: python sonarqube classnotfoundexception


    【解决方案1】:

    这是 SonarQube Python 插件中的bug。它将在下一个版本中修复。感谢您的反馈!

    【讨论】:

      猜你喜欢
      • 2016-09-03
      • 1970-01-01
      • 2023-04-02
      • 2014-04-22
      • 1970-01-01
      • 2017-10-08
      • 2020-06-13
      • 1970-01-01
      • 2017-09-21
      相关资源
      最近更新 更多