Sonarqube在旧的Apache Axis 1.2.1生成代码上进行AST扫描时发生颠簸

时间:2015-06-17 14:52:53

标签: sonarqube axis

在Apache Axis 1.2.1生成的一些代码上,sonarqube开始扫描它时出现问题。它卡在文件上然后似乎吃掉了内存并继续运行GC,直到它最终停止。

它会记录如下错误

    Java Main Files AST scan...
    11 source files to be analyzed
    9/11 files analyzed, current is /bamboo-path/TestProjectWAR/src/main/java/com/example/sonar/bug/Contact.java
    9/11 files analyzed, current is /bamboo-path/TestProjectWAR/src/main/java/com/example/sonar/bug/Contact.java    
    [JOURNAL_FLUSHER] WARNING Journal flush operation took 13,241ms last 8 cycles average is 2,192ms
...
Failed to execute goal org.codehaus.mojo:sonar-maven-plugin:2.6:sonar (default-cli) on project TestProject: GC overhead limit exceeded -> [Help 1]

我相信这是在我们更新到java插件3.3之后开始的,但我不是100%。

以下是代码的配对版本

public class Contact implements java.io.Serializable {
private java.lang.String cccCntctSeqNo;
private java.lang.Object __equalsCalc = null;

@Override
public synchronized boolean equals(java.lang.Object obj) {
    if (!(obj instanceof Contact)) {
        return false;
    }
    Contact other = (Contact) obj;
    if (obj == null) {
        return false;
    }
    if (this == obj) {
        return true;
    }
    if (__equalsCalc != null) {
        return (__equalsCalc == obj);
    }
    __equalsCalc = obj;
    boolean _equals;
    _equals = true
        && ((this.cccCntctSeqNo == null && other.getCccCntctSeqNo() == null) || (this.cccCntctSeqNo != null && this.cccCntctSeqNo
            .equals(other.getCccCntctSeqNo())))
    __equalsCalc = null;
    return _equals;
}

private boolean __hashCodeCalc = false;

@Override
public synchronized int hashCode() {
    if (__hashCodeCalc) {
        return 0;
    }
    __hashCodeCalc = true;
    int _hashCode = 1;
    if (getCccCntctSeqNo() != null) {
        _hashCode += getCccCntctSeqNo().hashCode();
    }
    __hashCodeCalc = false;
    return _hashCode;
}

}

是否还有其他人遇到此问题或发现任何工作?

2 个答案:

答案 0 :(得分:0)

好像你遇到了这个已知问题:http://jira.sonarsource.com/browse/SONARJAVA-1063

包含该修复程序的发布即将发生。

答案 1 :(得分:0)

我遇到了同样的问题,它常常挂在Journal Flushing上,并且最终在我在Sonarqube的Windbags Java默认超时中设置的值时超时。

我在运行sonar man命令时使用以下选项解决了这个问题: - MAVEN_OPTS =" -Xms256m -Xmx4096m -XX:+ UseSerialGC"

这解决了我的问题。