一、SonarQube代码扫描错误分析:String literals should not be duplicated

最近工作中开始使用代码扫描相关的工具对研发的代码就行质量评估,扫描了许多问题,为了提升自己的能力,有必要研究一下这些规则细节,特开此专栏,一为学习总结,二为记录成长过程,赋能广大博友,希望大家喜欢

String literals should not be duplicated


Duplicated string literals make the process of refactoring error-prone, since you must be sure to update all occurrences.

On the other hand, constants can be referenced from many places, but only need to be updated in a single place.


Noncompliant Code Example

With the default threshold of 3:

public void run() {
  prepare("action1");                              // Noncompliant - "action1" is duplicated 3 times
  execute("action1");
  release("action1");
}

@SuppressWarning("all")                            // Compliant - annotations are excluded
private void method1() { /* ... */ }
@SuppressWarning("all")
private void method2() { /* ... */ }

public String method3(String a) {
  System.out.println("'" + a + "'");               // Compliant - literal "'" has less than 5 characters and is excluded
  return "";                                       // Compliant - literal "" has less than 5 characters and is excluded
}

Compliant Solution

private static final String ACTION_1 = "action1";  // Compliant

public void run() {
  prepare(ACTION_1);                               // Compliant
  execute(ACTION_1);
  release(ACTION_1);
}

Exceptions

To prevent generating some false-positives, literals having less than 5 characters are excluded.

猜你喜欢

转载自blog.csdn.net/jinhoward/article/details/108390373