我使用PDI API来获取项目中代码的语言分布。
使用如下请求
var url = "http://<my_sonar_instance>/api/measures/component?additionalFields=metrics&component=<sonar_key>&metricKeys=duplicated_lines_density%2Cblocker_violations%2Ccomment_lines_density%2Ccritical_violations%2Cnew_maintainability_rating%2Cnew_duplicated_lines_density%2Cnew_reliability_rating%2Cnew_security_rating%2Cncloc%2Cncloc_language_distribution";
并通过以下方式解析JSON结果
$.component.measures[?(@.metric=="ncloc_language_distribution")].value
在名为的变量中赋值
sonar_ncloc_language_distribution
例如我得到
java=10514;js=237;jsp=3995;web=5;xml=42
现在,我将使用Modified JavaScript值在PDI转换中的某些变量上分配这些值,使用以下JavaScript代码
var map = new Map();
sonar_ncloc_language_distribution.split(";").forEach(x => map[x.split("=")[0]] = x.split("=")[1]);
var sonar_ncloc_java = map.java;
var sonar_ncloc_js = map.js;
var sonar_ncloc_jsp = map.jsp;
var sonar_ncloc_web = map.web;
var sonar_ncloc_xml = map.xml;
但它不起作用错误是
Unable compile javascript:
syntax error (script#2)
(NOTE:如果我尝试在HTML文件中"单独"执行JavaScript代码,一切正常...)
<!DOCTYPE html>
<html>
<body>
<script>
var sonar_ncloc_language_distribution = "java=10514;js=237;jsp=3995;web=5;xml=42";
var map = new Map();
sonar_ncloc_language_distribution.split(";").forEach(x => map[x.split("=")[0]] = x.split("=")[1]);
console.log(map);
var sonar_ncloc_java = map.java;
var sonar_ncloc_js = map.js;
var sonar_ncloc_jsp = map.jsp;
var sonar_ncloc_web = map.web;
var sonar_ncloc_xml = map.xml;
console.log(map.java);
console.log(map.js);
console.log(map.jsp);
console.log(map.web);
console.log(map.xml);
</script>
</body>
</html>
如有任何建议,我们将不胜感激,并提前感谢您
1条答案
按热度按时间5vf7fwbs1#
这是因为Rhino引擎不支持ES6。
在浏览器(或节点)中,您使用不同的javascript引擎,这些引擎已实现此处记录的
Map
对象https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Map
但是你没有使用
Map
方法--我是说set
和get
方法,而是使用map
,就像Array一样。因此,要解决您的问题,您只需更换
作者
资料来源:
PDI使用来自Mozilla的Rhino引擎,Rhino是核心JavaScript语言的开源实现;它不包含与网页操作相关的对象或方法。
https://intellipaat.com/blog/tutorial/pentaho-tutorial/transforming-your-data-with-javascript-code-and-the-javascript-step/
Map
和ES6
的Rhino
支持https://mozilla.github.io/rhino/compat/engines.html