gpt4 book ai didi

java - SonarQube - Java - 强制局部变量有效为最终变量

转载 作者:行者123 更新时间:2023-12-01 16:43:26 24 4
gpt4 key购买 nike

我正在使用SonarQube,并且我找不到任何Java的规则来报告局部变量的重新分配(也可以选择方法参数或类字段,但不能在当然是 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;
}

我不想强制每个变量都有final关键字,只是为了让它们实际上是final或final。

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

我正在使用sonarqube-7.4,如果它符合我想要的规则,我愿意更新。

最佳答案

如果有人感兴趣,我已经制定了一条规则来满足我在问题中的要求。目前,仅在 sonarqube-8.3.1 上进行了测试。

link to the repo .

关于java - SonarQube - Java - 强制局部变量有效为最终变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61819110/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com