![]() |
1
3
tl;博士
别担心。只需检查一下你的典型日期时间格式文本是否由
允许 JAVA时间 自动本地化表示日期时间值的文本。
细节仅供参考,声纳信息指的是 CLDR 成为基于的Java实现中的默认语言环境资源 OpenJDK 适用于Java9及更高版本。看见 JEP 252: Use CLDR Locale Data by Default .Java 10 further support . 你说:
我相信这不是代码工作的问题。 问题是本地化是否适用于区域设置。 日期时间值的格式因人类语言、文化和亚文化的不同而有很大差异。我们讨论的是翻译的单词,以及标点符号、缩写、元素顺序、大小写等规则。跟踪所有这些本地化信息需要大量数据。最重要的是,他们改变了。文化在变化,学术界也在理解变化。 OpenJDK for Java 8及更早版本中默认使用的此类语言环境数据的实现相对有限且肤浅,没有覆盖许多子文化。 相比之下,Unicode联盟管理的CLDR是 巨大的 详细,涵盖了许多亚文化。早期版本的OpenJDK包含CLDR的副本。但只有在Java9中,它才成为默认的语言环境资源,首先在那里进行查找。
也许声纳信息是这样说的
我不会担心的。如果你知道你的应用程序将只用于少数特定的地区,请测试这些地区。从每个地区招募一组用户。查看应用程序的典型输出是否符合他们的期望。如果他们满意,写一些单元测试,今天到此为止。 请记住,正如我所说,文化规范会随着时间的推移而改变。Unicode联盟跟踪这些变化,根据需要发布新版本的CLDR。当您更新Java实现时,可能会得到CLDR的更新版本。很可能在某一天,在某个语言环境中,当生成表示日期时间的文本时,您可能会得到不同的输出。如果您可能关心这些变化,请编写我上面提到的单元测试。 仅供参考,Sonar消息中提到的库是 International Components for Unicode (ICU) 建造人 Taligent 和 IBM ,现位于Unicode联盟: http://site.icu-project.org/ |
![]() |
2
3
巴兹尔·波尔克已经写下了明智的答案。我谦恭地补充一点。 这是对的,也是错的。
消息称为不符合的代码会产生:
因此,在我不知道比我在Basil Bourque的答案中读到的更多的情况下,在我看来,SonarQube规则是一个过时的规则,对Java 8有效,但对Java 11应该忽略。 我建议正确的方式在很大程度上取决于你设置日期和时间的格式。
代码分析器TL;DR:代码分析器当然可以帮助我们发现代码中的错误和其他不足之处。他们当然也有一些误报。 我确实信任代码分析器。我没有任何声纳Qube的经验。我是一个快乐的SpotBugs用户。当我确信代码符合我的要求时,我还会有选择地告诉SpotBugs忽略我编写的某些方法中的一些规则。我非常确信我也会用SonarQube做同样的事情。 |
|
user29759326 · 如何返回递归函数中的最后一个值? 6 月前 |
|
malife89 · 将java中的字符串读取为正确的日期格式 6 月前 |
![]() |
Tim · 在java中,有没有更快的方法将字节数组写入文件? 6 月前 |
![]() |
rudraraj · java中未声明最终变量 6 月前 |
![]() |
Bala Ji · 以下BFS的实施效率如何? 6 月前 |