【问题标题】:How to fine-tune the level for SonarQube Gradle plugin如何微调 SonarQube Gradle 插件的级别
【发布时间】:2019-05-24 13:02:11
【问题描述】:

我正在为 Gradle(4.7 版)使用 SonarQube 插件(2.6.1 版),并且遇到了很多不重要的日志输出被写入的问题,同时在我的 CI 服务器上运行声纳分析。

有没有办法微调此插件的日志级别

我检查了documentation,但我发现与日志输出相关的唯一设置是 JVM 参数“verbose”,我没有使用任何一种方式(我猜默认是false 所以这不应该为我打开)。

编辑:以下是一些我想去掉的输出示例:

  1. findbugs 分析过程中一些巨大的异常堆栈跟踪(这个被缩短了,不想发布整个堆栈跟踪,它真的很大)。
16:23:34.993 ERROR - Unable to create symbol table for : /opt/workspace/pipeline-1/src/main/java/com/SomeClass.java
java.lang.NullPointerException: null
    at org.sonar.java.resolve.TypeAndReferenceSolver.getSymbolOfMemberSelectExpression(TypeAndReferenceSolver.java:232) ~[java-squid-2.5.1.jar:na]
    at org.sonar.java.resolve.TypeAndReferenceSolver.resolveAs(TypeAndReferenceSolver.java:200) ~[java-squid-2.5.1.jar:na]
    at org.sonar.java.resolve.TypeAndReferenceSolver.resolveAs(TypeAndReferenceSolver.java:182) ~[java-squid-2.5.1.jar:na]
    at...
  1. 来自 PMD 的堆栈跟踪:
16:23:37.206 ERROR - Fail to execute PMD. Following file is ignored: /opt/workspace/pipeline-1/src/main/java/com/SomeClass.java
java.lang.RuntimeException: null
    at org.objectweb.asm.MethodVisitor.visitParameter(Unknown Source) ~[asm-5.0.3.jar:5.0.3]
    at org.objectweb.asm.ClassReader.b(Unknown Source) ~[asm-5.0.3.jar:5.0.3]
    at org.objectweb.asm.ClassReader.accept(Unknown Source) ~[asm-5.0.3.jar:5.0.3]
    at org.objectweb.asm.ClassReader.accept(Unknown Source) ~[asm-5.0.3.jar:5.0.3]
    at net.sourceforge.pmd.lang.java.typeresolution.PMDASMClassLoader.getImportedClasses(PMDASMClassLoader.java:77) ~[pmd-java-5.2.1.jar:na]...
  1. 很多不相关的警告,例如:
16:23:38.638 WARN  - /opt/workspace/pipeline-1/src/main/java/com/SomeClass.java: Got an exception - expecting EOF, found '}'
/opt/workspace/pipeline-1/src/main/java/com/SomeClass.java:28:5: expecting RCURLY, found 'default'
16:23:38.655 WARN  - /opt/workspace/pipeline-1/src/main/java/com/SomeClass.java: Got an exception - expecting EOF, found 'someVariable'

我不知道究竟是什么导致了这些问题,但由于我的应用程序和声纳分析的结果看起来都不错,我想摆脱这些日志输出,因为它们只会污染我在 Jenkins 上的日志和让它们不可读。

【问题讨论】:

  • 你能举一些你想摆脱的输出的例子吗?
  • @Jeroen Heier 谢谢,我现在添加了一些示例

标签: jenkins gradle sonarqube gradle-plugin log-level


【解决方案1】:

sonar.log.levelsonar.verbose的属性;例如:

allprojects {
    sonarqube {
        properties {
            // property "sonar.log.level", "INFO"
            property "sonar.log.level", "TRACE"
        }
    }
}

请参阅analysis parameters

【讨论】:

  • 这对我没有帮助。您可能已经注意到,我想删除的一些日志具有 ERROR 日志级别。通过将日志级别设置为高于 ERROR 来删除 所有 ERROR 日志的风险太大(例如,如果可能的话,设置为 SEVERE)。如果我这样做可能会让我在路上受挫,我需要更细粒度的控制。
  • @mprev0 你仍然可以添加一个 Gradle Exec 任务,它运行一个 shell 脚本,通过模式匹配从日志文件中删除某些行。除非能够更改插件代码,否则不要认为可以改变日志行为。
  • 这根本不是一个选项。我也不想在 Jenkins 实时控制台输出中看到那些日志...
猜你喜欢
  • 2019-08-11
  • 2018-08-14
  • 2016-09-09
  • 2016-08-01
  • 2016-08-01
  • 1970-01-01
  • 2017-06-10
  • 2020-05-10
  • 2017-12-31
相关资源
最近更新 更多