虽然循环复杂度是一个有价值的指标,但我倾向于认为它是识别难以维护
代码的差工具.特别地,我倾向于发现它只是突出
显示某些类型的
代码(例如解析器),并且错过了难以递归,线程和耦合问题以及许多已定义的反模式.
还有哪些其他工具可用于识别有问题的Java代码?
请注意,我们已经使用PMD和FindBugs,我认为这是很好的方法级问题识别.
我的经验是,查看
代码可维护性时最重要的指标是:
>循环复杂性,以识别可能难以理解/修改的大块代码.
>嵌套深度,找到相似的点(高嵌套深度自动高CC,但不一定是相反的方式,所以两者的得分都很重要).
>进/出,更好地了解方法/类之间的关系以及个别方法的实际重要性.
当检查由他人写的代码时,包含动态技术通常是有用的.通过分析器/代码覆盖工具简单地运行常见的使用场景,以发现:
>实际执行的代码(分析器对于这个很好,只是忽略时序信息,而不是看命中计数).
>代码覆盖很好找(几乎)死代码.为了防止您投入时间重构很少被执行的代码.
通常的嫌疑犯,例如任何分析器,代码覆盖率和指标工具通常可以帮助您获取进行这些评估所需的数据.