计算javascript函数中的语句数
Calculate the number of statements in a javascript function
我想计算 javascript 代码块中的语句数。这是为了评估代码对于编程挑战有多短(如果有 better/easier 评估代码的方法,我也有兴趣听到)。
出于此评估的目的,我想假设语句是能够在其中执行操作的任何内容,例如:
let values = ['test 1', 'test 2'];
for(let i in values) {
let object = {
a: i%3,
b: Math.floor(i/3),
c: i*2
};
let another = {test: 0 || 4};
let something = values[i];
let otherSomething = getSomeValues(object[a], object[b]);
setSomeValues(object[a], object[c]);
for(let j = 0; j < 5; i++) if(i < j) break;
}
有相当多的语法要涵盖,所以理想情况下,如果有可用的库,我想用它来做——我的谷歌搜索找不到任何非常合适的东西。
我尝试编写一个正则表达式来匹配语句之间所有可能的中断,但这很快就会变得混乱:
[\n;]|\)[ \w]|[{,][\s\w]+:\s*|[{}]
这是我一直在使用的 link 到 the regexr。打破这一点:
[\n;]
- 匹配换行符或分号,这是开始新语句的正常方式
\)[ \w]
- 匹配右括号后的语句,例如if (something) return;
[{,][\s\w]+:\s*
- 匹配对象中键值对的键
[{}]
- 匹配块的左括号和右括号
我还删除了所有零长度匹配项,因为语句不能为空。
正如我所说,理想情况下我更喜欢图书馆,但我想就我的方法征求一些意见,以及我是否掌握了大部分边缘案例。
由于您试图理解特定的代码块而不是构建库,因此您应该查看 astexplorer.net
Here is a link 显示了经过良好解析的树,如果需要,您可以配置示例以使用替代解析器(babel、acorn、eslint 等)。
我想计算 javascript 代码块中的语句数。这是为了评估代码对于编程挑战有多短(如果有 better/easier 评估代码的方法,我也有兴趣听到)。
出于此评估的目的,我想假设语句是能够在其中执行操作的任何内容,例如:
let values = ['test 1', 'test 2'];
for(let i in values) {
let object = {
a: i%3,
b: Math.floor(i/3),
c: i*2
};
let another = {test: 0 || 4};
let something = values[i];
let otherSomething = getSomeValues(object[a], object[b]);
setSomeValues(object[a], object[c]);
for(let j = 0; j < 5; i++) if(i < j) break;
}
有相当多的语法要涵盖,所以理想情况下,如果有可用的库,我想用它来做——我的谷歌搜索找不到任何非常合适的东西。
我尝试编写一个正则表达式来匹配语句之间所有可能的中断,但这很快就会变得混乱:
[\n;]|\)[ \w]|[{,][\s\w]+:\s*|[{}]
这是我一直在使用的 link 到 the regexr。打破这一点:
[\n;]
- 匹配换行符或分号,这是开始新语句的正常方式\)[ \w]
- 匹配右括号后的语句,例如if (something) return;
[{,][\s\w]+:\s*
- 匹配对象中键值对的键[{}]
- 匹配块的左括号和右括号
我还删除了所有零长度匹配项,因为语句不能为空。
正如我所说,理想情况下我更喜欢图书馆,但我想就我的方法征求一些意见,以及我是否掌握了大部分边缘案例。
由于您试图理解特定的代码块而不是构建库,因此您应该查看 astexplorer.net
Here is a link 显示了经过良好解析的树,如果需要,您可以配置示例以使用替代解析器(babel、acorn、eslint 等)。