为什么声纳-流道分析在"Updating semaphore"时陷入无限循环



启用调试后,我从命令行看到无限量:

15:10:18.796 INFO  - 1742/58318 files analyzed, current is C:workproductproduct-daosrccompanyproductdaoaccountcorrespondenceMFLetterCommissionStatmntDAO.java
15:10:22.592 DEBUG - Updating semaphore batch-product:Trunk
15:10:28.797 INFO  - 1742/58318 files analyzed, current is C:workproductproduct-daosrccompanyproductdaoaccountcorrespondenceMFLetterCommissionStatmntDAO.java
15:10:32.595 DEBUG - Updating semaphore batch-product:Trunk
15:10:38.798 INFO  - 1742/58318 files analyzed, current is C:workproductproduct-daosrccompanyproductdaoaccountcorrespondenceMFLetterCommissionStatmntDAO.java
15:10:42.597 DEBUG - Updating semaphore batch-product:Trunk
15:10:48.799 INFO  - 1742/58318 files analyzed, current is C:workproductproduct-daosrccompanyproductdaoaccountcorrespondenceMFLetterCommissionStatmntDAO.java
15:10:52.598 DEBUG - Updating semaphore batch-product:Trunk
15:10:58.799 INFO  - 1742/58318 files analyzed, current is C:workproductproduct-daosrccompanyproductdaoaccountcorrespondenceMFLetterCommissionStatmntDAO.java
15:11:02.600 DEBUG - Updating semaphore batch-product:Trunk
15:11:08.800 INFO  - 1742/58318 files analyzed, current is C:workproductproduct-daosrccompanyproductdaoaccountcorrespondenceMFLetterCommissionStatmntDAO.java
15:11:12.602 DEBUG - Updating semaphore batch-product:Trunk

提到的特定类很小(~100 行),但确实包含一些"有趣"的代码 - 这可能是问题所在吗?

它是机器翻译的Powerbuilder sql,所以看起来有点奇怪:

wkcm_sql_queue sqlq = new wkcm_sql_queue();
ins = new SqlInsert();
ins.INSERT(
  sqlq.sqlq_statement(),
  sqlq.sqlq_execution_date(),
  sqlq.sqlq_system_code())
.SELECT(ADD(ADD(ADD(ADD(ADD(ADD(ADD(ADD(ADD(ADD(ADD(ADD(ADD(ADD(ADD(ADD(ADD(ADD(ADD(ADD(ADD(ADD(ADD(ADD(ADD(new Literal("EXEC CMLetter_LetterRequest "), TO_CHAR(letgPrcsCodeId)), new Literal(" ")), new Literal(",")), new Literal("NULL,")), TO_CHAR(dsetClientId)), new Literal(" ")), new Literal(",")), new Literal("NULL,")), TO_CHAR(clpnCbcsCodeId)), new Literal(" ")), new Literal(",")), new Literal("NULL,")), new Literal("NULL,")), new Literal("NULL,")), new Literal("NULL,")), new Literal("NULL,")), new Literal(""")), TO_CHAR(startDateIn)), new Literal(""")), new Literal(",")), new Literal(""")), TO_CHAR(endDateIn)), new Literal(""")), new Literal(",")), new Literal("NULL")), 
  GET_SYSTEM_DATE(), 
  new Literal("MSTF").AS("col1"));
Database.insert(ins);            

其余代码相对简单。

有人能帮忙吗?谢谢

这确实是解析器的已知性能问题:http://jira.codehaus.org/browse/SONARJAVA-793

同时,如果性能不可接受,您可以使用 SonarQube 排除机制 (http://docs.sonarqube.org/x/AgAe) 从分析中排除此特定文件。

最新更新