如何解决什么应该标记为“final”来解决这个 Scala 代码异味?
我无法理解 Sonarqube 在我的 Scala 类中报告的“代码异味”。该消息类似于:
com.foo.bar.MyObject$.MODULE$ isn't final and can't be protected from malicious code
我的代码中的第一行 package...
被标记为有问题(见下文)。我不明白 Sonarqube 是否希望 Object 被标记为 final (这在 Scala 中没有意义)或者是否与导入有关。谁能帮我理解一下?
package com.foo.bar
import com.foo.baz
Object MyObject {
val myVal = ...
def method = ...
}
解决方法
这是因为对象如何转换为字节码。如果您想删除此消息,请考虑这样做:
client.on('guildMemberAdd',member => {
member.setNickname('[Member] ' + member.displayName);
});
从 scala 代码位的角度来看,这不会有效地执行任何操作,您的 linter 将关闭,您可以检查现在将反映该变量的字节码
package com.foo.bar
import com.foo.baz
final object MyObject {
val myVal = ...
def method = ...
}
现在是最终的。这是因为对象实例在类 MyObject 中变成了静态 _.MODULE$ 变量。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。