Android Logger detector custom linter

49 views Asked by At

I'm trying to write a custom linter that finds any usage of Log class in the project.

Everything compiles and I do have other linters that work well so it seems that everything is integrated as it should be.

Can you tell me what am I missing?

public class LoggerUsageDetector extends Detector
    implements Detector.ClassScanner {

public static final Issue ISSUE = Issue.create("SywLogIsNotUsed",
        "You must use our `SywLog`",
        "Logging should be avoided in production for security and performance reasons."
        + " Therefore, we created a SywLog that wraps all our calls to Logger and disable them for release flavor.",
        Category.CORRECTNESS,
        9,
        Severity.FATAL,
        new Implementation(LoggerUsageDetector.class,
                Scope.CLASS_FILE_SCOPE));

@Override
public List<String> getApplicableCallNames() {
    return Arrays.asList("v", "d", "i", "w", "e", "wtf");
}

@Override
public List<String> getApplicableMethodNames() {
    return Arrays.asList("v", "d", "i", "w", "e", "wtf");
}

@Override
public void checkCall(@NonNull ClassContext context,
                      @NonNull ClassNode classNode,
                      @NonNull MethodNode method,
                      @NonNull MethodInsnNode call) {
        context.report(ISSUE,
                method,
                call,
                context.getLocation(call),
                "You must use our `SywLog`");

}
}

And here is the registry of course:

public class LintersIssueRegistry extends IssueRegistry {

@Override
public List<Issue> getIssues() {
    return new ArrayList<Issue>() {{
        add(MyAnnotationDetector.CAREFUL_NOW_ISSUE);
        add(LoggerUsageDetector.ISSUE);
    }};
}

}

My "target" code that should throw an error:

    private void doSomething() {
    Log.v("ta", "");
    Log.d("ta", "");
    Log.wtf("ta", "");
}
0

There are 0 answers