0

当使用 CodeNarc 对 Groovy 和 Grails 代码进行静态代码分析时,它无法确定类层次结构。在一个服务类中有一个私有方法,比如 BaseService。另一个服务类说 ChildService 扩展了 BaseService 类。ChildService 中的一种方法调用 BaseService 中定义的私有方法。但是 BaseService 类在它自己的类中的任何地方都没有使用私有方法。所以在单独分析 BaseService 类时,私有方法会显示为未使用。但是当我们查看类层次结构时,我们可以理解它的一个子类正在调用它。
所以,我的问题是,CodeNarc 是如何错过这种依赖的?静态代码分析器不会构建解析树并对其进行分析吗?如果不是,它如何分析代码?对静态代码分析内部的任何见解都受到高度赞赏。
谢谢。

4

1 回答 1

3

正如它在codenarc 的文档中所说

UnusedPrivateMethod 规则

检查未在同一类中引用的私有方法。请注意,Groovy 代码当前不“尊重”private 修饰符(即,Groovy 可以访问其他类中的私有成员)。

已知限制:

  • 不通过属性访问识别方法引用(例如 getName() 作为 x.name 访问)
  • 当方法名是 GString 时不识别方法调用(例如 this."$methodName"())
  • 不识别调用另一个实例的私有方法(即除此之外)
  • 不区分多个同名但参数不同的私有方法(即重载)
  • 不检查未使用的构造函数

所以你将不得不关闭这条规则

于 2012-12-11T10:39:35.717 回答