我刚刚安装了最新版本的 SonarLint,并对新学员的代码启动了完整的 SonarLint 分析,新学员已将一些非静态非注入(inject)成员放入 Spring 单例中,就像本示例中所示:
@Controller
public class HelloWorld {
private String name = null;
@RequestMapping("/greet", method = GET)
public String greet(String greetee) {
if (greetee != null) {
this.name = greetee;
}
return "Hello " + this.name; // if greetee is null, you see the previous user's data
}
}
https://rules.sonarsource.com/java/tag/spring/RSPEC-3749
所以我希望 SonarLint 能够检测到它,但没有(我有其他建议,但对此一无所知)。
此规则是否属于特殊集的一部分,需要在某个地方的某个conf中激活?
最佳答案
正如你直觉所想,规则 squid:S3749默认情况下不是质量配置文件的一部分(通常称为 SonarWay)。因此,如果没有正确的配置,它不会通过全新安装的 SonarLint 来执行。
从那里,您有两个选项来启用该规则:
- 将 SonarLint 连接到 SonarQube实例或 SonarCloud ,这将允许您自动配置和同步所有项目的质量配置文件,执行每个项目预期的规则
- 使用最新版本的 SonarLint(我尝试使用 4.1 版本的 eclipse),您应该能够直接通过插件配置启用规则,但这不会与参与该项目的其他人共享。
请注意,不幸的是,目前无法访问 https://rules.sonarsource.com/查看有关质量配置文件的信息(我现在正在进行内部反馈,以便将来解决此问题)
关于java - 此 Sonar 规则未触发,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56973360/