这些问题是相当不言自明的。
各种(java)代码覆盖工具如何处理注释?它们被视为代码并包含在覆盖率报告中吗?它们并非完全“可执行”,所以我对它们将如何被对待感到困惑。
PS:顺便说一下,我已经用Google搜索过了,关于这个主题的内容并不多!答案 0 :(得分:1)
简短的回答是,注释是元数据,因此它们不是可以涵盖的代码的一部分。不过要考虑一下。 根据您使用的技术,应该包含在代码覆盖中以及可以包含的内容可能完全不同。
大多数覆盖工具(我知道cobertura和ECLEmma)从未真正查看源代码,他们会查看字节码。并非您在源文件中看到的每一行都与.class文件的可执行部分中的任何内容相对应。
注释使这更复杂,因为一些注释只是源代码中的元数据,有些是编译并保存在字节码中。当然,仅作为元数据的注释不应被视为代码,因此它们不应包含在覆盖信息中。即使是保存在二进制文件中的注释也不应直接被视为要覆盖的代码。像
这样的东西@MyAnnotation
class MyClass ...
不可执行。放在那里的注释没有可执行的方面。所以它无法涵盖。到目前为止,这是非常肯定的。
从这里开始,我猜测了一下。注释可以包含可以查询的数据字段。我不知道编译器是否为它生成了getter方法(原则上是可以覆盖的代码),或者它们是否是由调用者直接读取的公共字段。