我试图在X中编写一个halstead复杂性度量(语言并不重要),我认为最好的方法是在源代码上使用正则表达式.
我已经设法做了90%,但我在变量名称上挣扎.
给出以下代码
public void main() { int a,b,c,av; className class; strFmt("%1 %2 %3",a,c); av = (a + b + c) / 3; info("avg = %1");*/ if(a) { a++; class.add(a); } else { b++; class.subtract(b) } this.main(); }
我希望得到“a”“b”“c”“av”“class”
有了halstead,它需要计算它们的实例.我想的方法是将上面的内容存储在一个列表中,然后在正则表达式查询中使用列表中的任何内容.迎合变量的所有可能用途将是疯狂的.
解决方法
我认为你必须反思AOT以获得不同的变量.
您可以使用TreeNode的反射,或者您可以使用XPPCompiler获取有关您正在处理的对象的信息以帮助:
info(strFmt(“%1”,new xppCompiler().dumpClass(‘salesformletter’)));