代码覆盖需要特殊的工具,因为您试图找出是否通过任何测试执行了一条生产代码.你要问的是更模糊一些,可能要容易得多(“这个大类的日志记录是什么?”)或者更难以实现(“我们是否记录了生产中断的方法” ?“).
对于第一个问题,你可以很快地编写一个shell脚本来完成这项工作.例如,这是Perl中的骨架.在这里,我假设我们正在使用SLF4J并且看到“LoggerFactory”的导入足以证明有一个记录器.
while ($filename = shift) {
open my $in, "
my $loc = 0;
my $log = "NO LOGGER";
while () {
$loc++;
if (m/import org.slf4j.LoggerFactory/) {
$log = "has logger";
}
}
print "$filename : $loc LOC $log\n";
$total{$log} += $loc;
}
print "\n\nTOTAL LOGGED: $total{'has logger'}\nTOTAL UNLOGGED: $total{'NO LOGGER'}\n";
我可以从我的shell运行它来运行一个小项目中的所有Java文件
$find . -name \*.java -exec perl haslog.pm {} \+
这仅适用于小型项目,而且相当脆弱,但制作更强大的版本并不是一件容易的事.