【问题标题】:java script parsing error during jenkins nightly build. after upgrading sonar to 4.3.2jenkins 每晚构建期间的 javascript 解析错误。将声纳升级到 4.3.2 后
【发布时间】:2014-10-05 07:24:05
【问题描述】:

将声纳从 3.4 升级到 4.3.2 版本后,我们在 jenkins nightly build 期间遇到 java 脚本解析错误。在上一个版本中一切正常。声纳运行器仍然是版本 2。请您就解决此错误提出建议。使用的插件是sonar-javascript-plugin-1.6sonar-squid-java-plugin-1.6

错误详情:

[INFO] [12:56:47.163] Sensor JavaScriptSquidSensor...
[INFO] [12:56:47.275] 98 source files to be analyzed
[INFO] [12:56:57.330] 10/98 files analyzed, current is /var/lib/jenkins/jobs/Nightly_Build_abc_CAD_src/workspace/abc_CAD_src/src/main/webapp/auth/js/lib/angular/jquery-ui-1.9.0.custom.js
[ERROR] [12:57:01.429] Unable to parse file: /var/lib/jenkins/jobs/Nightly_Build_abc_CAD_src/workspace/abc_CAD_src/src/main/webapp/js/lib/csrfguard.js
com.sonar.sslr.api.RecognitionException: Parse error at line 199 column 13 failed to match all of: spacing IDENTIFIER NULL TRUE FALSE NUMERIC_LITERAL stringLiteral REGULAR_EXPRESSION_LITERAL LBRACKET LCURLYBRACE LPARENTHESIS FUNCTION NEW THIS IDENTIFIER NULL TRUE FALSE NUMERIC_LITERAL stringLiteral REGULAR_EXPRESSION_LITERAL LBRACKET LCURLYBRACE LPARENTHESIS FUNCTION NEW NEW THIS IDENTIFIER NULL TRUE FALSE NUMERIC_LITERAL stringLiteral REGULAR_EXPRESSION_LITERAL LBRACKET LCURLYBRACE LPARENTHESIS FUNCTION NEW THIS IDENTIFIER NULL TRUE FALSE NUMERIC_LITERAL stringLiteral REGULAR_EXPRESSION_LITERAL LBRACKET LCURLYBRACE LPARENTHESIS FUNCTION NEW NEW DELETE VOID TYPEOF INC DEC PLUS MINUS TILDA BANG

【问题讨论】:

  • 您能否提供包含文件“src/main/webapp/js/lib/csrfguard.js”第 199 行的代码段?解析器中可能存在错误。 SonarQube 平台的升级不应该对插件解析源的方式产生影响。在构建之前文件是否已更改?
  • @Linda :在构建之前没有对文件进行任何更改。 189: 窗口.XMLHttpRequest = init_XMLHttpRequest; 190: } 191: 192: /** 根据 domainStrict 检查是否有效域/ 193: function isValidDomain(current, target) { 194: var result = false; 195: 196: / 检查精确或子域匹配 **/ 197: if(current == target) { 198: result = true; 199: } else if(%DOMAIN_STRICT% == false) { ^ 200: if(target.charAt == '.') { 201: result = current.endsWith(target); 202: } else { 203: 结果 = current.endsWith('.' + 目标); 204:}
  • 您能否确认该文件之前已被分析过(您可以从 UI 中看到)?也许它是否被排除在提供给 sonarqube 的源目录中并且是在升级之后?在任何情况下,由于“%DOMAIN_STRICT%”(第 199 行第 13 列)这不是允许的构造而发生解析错误?是吗?
  • 是的,你是对的。该文件是 lob 文件夹中的文件之一,包含在 pom.xml 的排除项下,但我不明白为什么它没有被忽略。我们有 js/lib/*.js,auth/js/lib/**/*.js,js/lib/**/**/*.js 我还添加了它作为声纳属性,但仍然得到相同的错误。 -Dsonar.exclusions=js/lib/*.js,auth/js/lib/**/*.js,js/lib/**/**/*.js 请指教。
  • @linda: kindkly 回复:P

标签: java javascript maven jenkins sonarqube


【解决方案1】:

正如 OP 上的 cmets 中所阐明的,您的解析错误是由于某些先前排除的文件不再被排除在分析之外的结果。现在包含这些文件是因为您的排除项是在分析时指定的(即在 pom.xml 或 sonar-project.properties 中),并且不再受支持。我相信这发生在3.5

要消除解析错误,您需要在界面中重新指定排除项。 The docs 应该会有所帮助。

【讨论】:

  • 在声纳仪表板上,在项目名称->类别->排除->文件->源文件排除下,我们包含了以下内容,但它仍然抛出相同的错误。为什么不像以前的版本那样考虑排除项?还缺少什么来考虑排除?
  • js/lib/*.js,auth/js/lib/**/*.js,js/lib/**/**/*.js
  • @user3932272 您将它们设置为单独的条目,对吗?此外,您的第三种模式可以简化为:js/lib/**/*.js。 “*”本质上是目录的“”。最后,我相信第一种模式可以被淘汰,因为它所涵盖的内容都包含在第三种模式中。
  • 是的,我们将它们用作单独的条目,但问题仍然存在。
  • 你的 sonar.sources 值是多少?
猜你喜欢
  • 2016-05-26
  • 2014-07-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-06-20
  • 2012-04-25
相关资源
最近更新 更多