【问题标题】:CodeNarc's static code analysis is not able to find proper class dependenciesCodeNarc 的静态代码分析无法找到正确的类依赖项
【发布时间】:2012-12-10 15:01:12
【问题描述】:

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

【问题讨论】:

    标签: java grails groovy static-code-analysis codenarc


    【解决方案1】:

    正如documentation for codenarc 中所说:

    UnusedPrivateMethod 规则

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

    已知限制:

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

    所以你要去have to turn this rule off

    【讨论】:

      猜你喜欢
      • 2017-07-21
      • 2012-06-24
      • 2019-08-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-12-11
      • 2016-06-13
      • 1970-01-01
      相关资源
      最近更新 更多