SonarQube - Java - 强制局部变量成为有效的最终变量。

问题描述 投票:1回答:1

我使用的是 SonarQube 我找不到任何规则 爪哇 会报告局部变量的重新赋值(也可以是方法参数或类字段,但当然不是在setter中),或者换句话说,强制每个局部变量都是 实际上最终.

非编纂者的例子

public Car createRedCar() {
  Car car = new Car();
  car.setColor(Color.RED);

  car = makeCool(car); // <- error, car variable was reassigned
  // do other irrelevant stuff with car, eg log, dispatch event or whatever
  return car;
}

编制实例

public Car createRedCar() {
  Car car = new Car();
  car.setColor(Color.RED);

  Car coolCar = makeCool(car); // <- it's ok, because all local variables are effectively final
  // do other irrelevant stuff with car, eg log, dispatch event or whatever
  return coolCar;
}

另一个编译器的例子

public Car createRedCar() {
  final Car car = new Car();
  car.setColor(Color.RED);

  final Car coolCar = makeCool(car); // <- it's also ok, but i don't want to force every variable to be final
  // do other irrelevant stuff with car, eg log, dispatch event or whatever
  return coolCar;
}

我不想强迫每个变量都有最终的关键字,只是想让它们有效地成为最终或最终。

如果没有默认的规则,我可以使用自定义规则和或插件,甚至最后写一个,但可能有人已经做了,这就是为什么我在这里发帖。

我使用的是sonarquube-7.4,如果有我想要的规则,我愿意更新。

java sonarqube final rules local-variables
1个回答
0
投票

如果有人感兴趣,我已经开发了一个规则,可以实现我在问题中的要求。目前,它只在 sonarqub-8.3.1。.

链接到回帖.

© www.soinside.com 2019 - 2024. All rights reserved.