【问题标题】:How to resolve sonar issue - duplicate block of code?如何解决声纳问题 - 重复的代码块?
【发布时间】:2025-12-19 13:10:11
【问题描述】:

对于两个不同的 ReST API,我得到了不同的响应,并且存在公共字段。

我正在为反序列化创建两个不同的 bean。两个 bean 都有共同的字段。反序列化工作正常,但声纳给出了公共字段存在重复代码块的问题。

【问题讨论】:

  • 你能分享代码示例吗?为什么必须重复?
  • 忽略。事物看起来相同的事实并不意味着它是相同的。

标签: java spring spring-boot sonarqube json-deserialization


【解决方案1】:

有3种方法可以解决这个问题,我能想到。

  1. 您可以创建一个父 bean 并为其提取公共属性,然后从新创建的父 bean 中扩展 2 个 bean,这样您就不会出现代码重复。

  2. 您可以从声纳中排除 bean - 因为 bean 只是 bean,您不必真正担心对它们进行声纳分析,但对 bean 执行声纳分析仍然可能很好,具体取决于关于你想做什么。您可以在此处找到有关如何操作的详细信息:SonarQube Exclude a directory

  3. 您可以更改字段的顺序 -- 这是一件愚蠢的事情,但我以前这样做只是为了解决声纳问题。

例如,如果两个文件都有

int a;
int b;
int c;
int d;

改成

int a;
int c;
int b;
int d;

这会欺骗声纳

【讨论】:

  • 好吧,我不能说是这样,但我过去常常在增加声纳问题并且急于将其发送到部署时这样做。也许您可以考虑将公共字段移动到父 bean,然后从中扩展子 bean @HarshKanakhara,这样您就可以摆脱声纳重复问题。我认为这是一个很好的做法。
  • 我采用了相同的方法,但现在有多个 bean。我无法将它们全部扩展。我不能将它作为引用变量传递,否则需要编写反序列化逻辑。
最近更新 更多