当前位置: 首页 > 知识库问答 >
问题:

Checkstyle建议不可能的常量排序

丁曦
2023-03-14

我有几个长字符串常量(static final变量)共享一个公共片段。片段本身没有任何意义,所以我声明它为“私有静态final”。

例如:

private static final XML_H = "<?xml ....";
public static final DOC_1 = XML_H + "<tag....";
public static final DOC_2 = XML_H + "<tag....";
Variable access definition in wrong order

在我看来,这似乎是规则中的一个bug,因为这是一个真正的语言限制,没有其他方法可以做到这一点。我认为规则应该把这个案子排除在检查之外。

你们同意吗?或者有什么方法可以在没有问题的情况下改进代码?

共有1个答案

熊锐进
2023-03-14

您是正确的,DeclarationOrder检查不包括您的案例。

这是对此检查的合理限制,因为Checkstyle以独占方式在源代码上工作,因此没有可用的编译器信息。因此,虽然您的特定情况可以处理,但类似的其他情况会导致运行时类型解析和范围确定方面的问题。换句话说,我并不期望他们能增强Checkstyle工具。

为了解决这一问题,您可以将检查的ignorremodifiers选项设置为true,这将告诉Checkstyle忽略您的大小写,同时仍然检查字段后面有哪些方法和构造函数。这应该是合理的。

如果您无法更改规则(即通过公司限制),并且无法说服负责人,那么您可以将private常量移动到private static内部类。这也会让违规不了了之,但当然会让你的代码变得更糟。(那真的很可悲。)

 类似资料:
  • 我如何设置使用pmd和checkstyle结果仅作为建议,并在构建服务器上禁用它们?那么这样做会不会是一种不好的做法呢? 测试中的类需要用mock对象填充其字段,这些对象不会在测试中的任何地方使用,但需要用@mock声明和注释,以使测试中的类正确工作。添加@SuppressWarnings(“pmd.unusedPrivateField”)。 在测试类中,我将有方法从一长串参数创建对象,例如:cr

  • 问题内容: 我有一个带有文本类型的输入框: 我有一个名字列表: 现在让它只有2。当我键入时,它应该显示为建议。当我输入seeu`作为建议时。如何做到这一点? 问题答案: 的填充选项DataList控件与值与数据- NG-重复 : 祝好运!

  • 我想从我的checkstyle报告中忽略一个特定的文件夹(名为generated-sources ),因为它们是生成的。 我正在使用 eclipse-cs 来显示我的违规行为。 我在xml中添加了suppressionfilter: 我的压抑.xml看起来像这样: 但它不起作用。有什么想法吗?

  • 我们正在建立Amazon Elasticsearch服务(运行Elasticsearch版本2.3)。 我们有不同类型的数据(我目前认为是同一索引中的不同文档类型)。 我们在一个应用程序中有一个通用的搜索,我们想要一个内联的自动完成功能,即一个从所有不同的数据(文档)类型返回命中的完成建议器。那怎么能建立起来呢?

  • 我正在使用自定义列表视图来显示图像和文本。下面是我的列表视图项的布局文件和后面的代码。我会在帖子的底部解释我的问题。 下面是将必要信息加载到列表视图中的后端代码。 12-21 03:54:20.827:D/OpenGrenderer(1248):启用调试模式0 12-21 03:54:20.955:我/编舞(1248):跳过36帧!应用程序可能在其主线程上做了太多的工作。 12-21 03:54: