在 之前的一篇日志 中,我简单总结了调用Understand的Perl API的方法,这里再简单总结一些经验:
在SciTools\doc\manuals\pdf目录下的understand_api.pdf文件中,已经在第27页给出了获得一个Function的圈复杂度的示例。但往往我们想获取更多的度量指标,但可能并不知道Understand能够提供的度量指标,以及度量指标名称。下面以Java的方法(method)度量指标为例进行下总结,可以简单地通过这段代码:
foreach $file ($db->ents("File")){ foreach $class ($file->ents("Define","Class")){ foreach $method ($class->ents("Define","Method")){ print $method->name(),"'s metrics:","\n"; foreach $met ($method->metrics()){ print $met,"=",$method->metric($met),"\n"; } } } }
其中$db对应的就是上篇日志中获取的项目文件。这样就可以打印出一个Java项目的所有method的所有度量指标,也知道了度量指标的名称,如下图所示:
可以看到,Understand可以度量的方法的指标包括:CountInput(输入参数个数),CountLine(代码行数),CountLineComment(注释行数)等指标。接下来就可以在各种分析中使用这些指标了。