【问题标题】:Why does sonar think annotating non-public methods with @Transactional is wrong?为什么 sonar 认为用 @Transactional 注释非公共方法是错误的?
【发布时间】:2015-01-16 17:38:36
【问题描述】:

我们使用 aspect4J 和编译时编织。用@Transactional 注释私有方法是完全有效的,或者至少我是这么认为的。我很好奇为什么声纳有以下规则:

非公共方法不应是“@Transactional”

我的猜测是,声纳一定没有意识到有多种方法可以编织切面,而且 Spring 默认使用动态代理并不是唯一的方法。

值得注意的是,这是严重的“关键”。

两个问题: 1 - 假设用 @Transactional 注释私有方法是错误的,声纳是错误的吗? 2 - 如果他们错了,我该如何向声纳团队提交错误?

【问题讨论】:

    标签: sonarqube


    【解决方案1】:

    我们还遇到了界面中的“@Transactional”问题,这似乎是误报:

    将 java 插件升级到最新版本 (3.3) 解决了这个问题。

    关于类的非公共方法,有处于“Active”状态的规范票:

    回答你的第二个问题,我猜,他们的 jira (http://jira.sonarsource.com) 是该项目的主要错误跟踪系统。

    【讨论】:

    • 我认为这些都不能解决我的担忧。我的主要观点是 Sonar 假定默认的弹簧行为和动态代理实现。这是一个糟糕的假设。没有办法知道关于方面如何注入的运行时行为。
    • jira.sonarsource.com/browse/RSPEC-2230 实际上是这条无效规则的延续。
    猜你喜欢
    • 1970-01-01
    • 2020-01-26
    • 2015-02-06
    • 2021-05-18
    • 2018-02-23
    • 2016-12-26
    • 1970-01-01
    • 2015-03-12
    • 1970-01-01
    相关资源
    最近更新 更多