java - CodeModel 修饰符顺序

标签 java sonarqube modifier

使用CodeModel,有没有办法控制修饰符的顺序? 特别是在创建字段时。

CodeModel 似乎有自己的修饰符顺序定义,这与 Java 语言规范以及 SonarQube 和 CheckStyle 等产品的定义不同:

https://sonar43.spring.io/rules/show/squid:ModifiersOrderCheck?layout=false http://checkstyle.sourceforge.net/config_modifier.html

修饰符应按以下顺序出现:

  1. 注释
  2. 公开
  3. protected
  4. 私有(private)
  5. 摘要
  6. 静态
  7. final
  8. 短暂
  9. 不稳定
  10. 已同步
  11. 本地人
  12. 严格fp

此示例代码:

// Create field for serialVersionUID
JFieldVar field1 = newClass.field(JMod.PRIVATE | JMod.STATIC | JMod.FINAL, long.class, "serialVersionUID");
field1.init(JExpr.lit(1L));

生成以下不遵循建议顺序的修饰符:

private final static long serialVersionUID = 1L;

最佳答案

这是不可能的*。即使是令人讨厌的反射黑客也无法做到这一点。修饰符的顺序由 JMods#generate(JFormatter) 确定方法(在底部)。不幸的是,JMods 类只有一个显式声明为 private 的构造函数。

<小时/>

*当然,您可以添加另一层检测、字节码汇编或类似的层,或者只是创建 CodeModel 的修改版本以供本地使用。但没有非侵入性的方法来更改修饰符顺序。

关于java - CodeModel 修饰符顺序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37005314/

相关文章:

java SimpleDateFormat 模式与参数不同

java - Package By Feature 和 SONAR 表示依赖循环

java - 在 Sonar 中,如何按测试查看测试覆盖率?

C# 入口点类修饰符

ruby - Ruby 救援语句是否适用于 require?

regex - Perl正则表达式-gc修饰符是什么意思?

java - 将现有项目导入eclipse时,Maven根pom.xml标记为红色

java - 使 EditText 字段不可编辑

python - SonarQube - 是否有关于如何解决覆盖问题的基本示例/解释?

java - 如何关闭().executeUpdate?