我正在为SonarQube Javascript插件编写自定义规则插件。
现在,我想根据规则禁用在特定目录中的检查。 (例如,不应在bin路径中检查它)

现在我的问题是:如何获得相对于项目路径检查的文件的路径。或另一个解决方案是:如何获取项目路径?

我的代码是:

@Override
public void visitNode(Tree tree) {
    CallExpressionTree callExpression = (CallExpressionTree) tree;

    if (callExpression.callee().is(Kind.DOT_MEMBER_EXPRESSION)) {
        DotMemberExpressionTree callee = (DotMemberExpressionTree) callExpression.callee();

        // get the file that is checked
        File toTestedFile = getContext().getFile();

        //how to get the project path here to get the relative path???

        if (isCalleeConsoleLogging(callee)) {
            addLineIssue(tree, MESSAGE);
        }
    }

}

最佳答案

这就是平台排除机制的作用。如果我是您,则不会尝试将此类排除项放入规则实现中。相反,只需编写一个通用/通用规则实现并在全局级别设置Issue exclusions即可忽略要忽略的目录。

10-05 18:16