如何使用声纳规则在 java 代码中查找特定代码出现
How find specific code occurrences in java code with sonar rule
我想给开发者一些建议,例如:不推荐 System.currentTimeMillis() 并提供一些替代解决方案的意见。
据我所知,没有这样的声纳规则,我应该创建一个新的还是有一个参数化现有的选项?
我发现 java 的 xpath 不再受支持,所以我认为编写自定义规则是唯一的方法对吗?
您正在寻找模板规则 S2253,它允许您标记对特定方法的调用。
下面是 example 使用声纳设置自定义方法警告的方法:
@Rule(key = "NoObjectWaitRule",
name = "NoObjectWaitRule",
description = "You should not use classic wait/notify mechanism. Instead use Java Concurrency API.",
priority = Priority.MAJOR,
tags =
{
"bad-practice"
})
public class NoObjectWaitRule extends DisallowedMethodCheck
{
public NoObjectWaitRule()
{
super.setClassName("java.lang.Object");
super.setMethodName("wait");
super.setAllOverloads(true);
}
}
我想给开发者一些建议,例如:不推荐 System.currentTimeMillis() 并提供一些替代解决方案的意见。
据我所知,没有这样的声纳规则,我应该创建一个新的还是有一个参数化现有的选项?
我发现 java 的 xpath 不再受支持,所以我认为编写自定义规则是唯一的方法对吗?
您正在寻找模板规则 S2253,它允许您标记对特定方法的调用。
下面是 example 使用声纳设置自定义方法警告的方法:
@Rule(key = "NoObjectWaitRule", name = "NoObjectWaitRule", description = "You should not use classic wait/notify mechanism. Instead use Java Concurrency API.", priority = Priority.MAJOR, tags = { "bad-practice" }) public class NoObjectWaitRule extends DisallowedMethodCheck { public NoObjectWaitRule() { super.setClassName("java.lang.Object"); super.setMethodName("wait"); super.setAllOverloads(true); } }