在旧 Apache Axis 1.2.1 生成的代码上进行 AST 扫描时,Sonarqube 抖动
Sonarqube thrashing when doing AST scan on old Apache Axis 1.2.1 generated code
在 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;
}
}
有没有其他人遇到过这个问题或找到任何解决方法?
您似乎遇到了这个已知问题:http://jira.sonarsource.com/browse/SONARJAVA-1063
即将发布包含修复程序的版本。
我有同样的问题,它曾经挂在 Journal Flushing 上,最终超时,无论我在 Windbags 中设置什么值 Java sonarqube 中的默认超时。
我在 运行 sonar man 命令时使用以下选项解决了这个问题:-
MAVEN_OPTS="-Xms256m -Xmx4096m -XX:+UseSerialGC"
这已经解决了我的问题。
在 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;
}
}
有没有其他人遇到过这个问题或找到任何解决方法?
您似乎遇到了这个已知问题:http://jira.sonarsource.com/browse/SONARJAVA-1063
即将发布包含修复程序的版本。
我有同样的问题,它曾经挂在 Journal Flushing 上,最终超时,无论我在 Windbags 中设置什么值 Java sonarqube 中的默认超时。
我在 运行 sonar man 命令时使用以下选项解决了这个问题:- MAVEN_OPTS="-Xms256m -Xmx4096m -XX:+UseSerialGC"
这已经解决了我的问题。