如何使用声纳规则在 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);
    }

}