Lint to prevent glide log usage.

This commit is contained in:
Alan Evans 2021-01-26 14:43:07 -04:00
parent 8ef809a02b
commit d055bba452
7 changed files with 75 additions and 4 deletions

View file

@ -24,7 +24,7 @@ public final class Log {
}
public static void e(@NonNull String tag, @NonNull String message) {
e(tag, message, null);
SignalGlideCodecs.getLogProvider().e(tag, message, null);
}
public static void e(@NonNull String tag, @NonNull String message, @Nullable Throwable throwable) {

View file

@ -12,7 +12,7 @@ import android.graphics.Paint;
import android.graphics.PorterDuff;
import android.graphics.Rect;
import org.signal.glide.Log;
import org.signal.core.util.logging.Log;
import org.signal.glide.apng.io.APNGReader;
import org.signal.glide.apng.io.APNGWriter;
import org.signal.glide.common.decode.Frame;

View file

@ -21,7 +21,7 @@ import android.os.Message;
import androidx.annotation.NonNull;
import androidx.vectordrawable.graphics.drawable.Animatable2Compat;
import org.signal.glide.Log;
import org.signal.core.util.logging.Log;
import org.signal.glide.common.decode.FrameSeqDecoder;
import org.signal.glide.common.loader.Loader;

View file

@ -15,7 +15,7 @@ import android.os.Looper;
import androidx.annotation.Nullable;
import androidx.annotation.WorkerThread;
import org.signal.glide.Log;
import org.signal.core.util.logging.Log;
import org.signal.glide.common.executor.FrameDecoderExecutor;
import org.signal.glide.common.io.Reader;
import org.signal.glide.common.io.Writer;

View file

@ -60,6 +60,11 @@ public final class SignalLogDetector extends Detector implements Detector.UastSc
context.report(LOG_NOT_SIGNAL, call, context.getLocation(call), "Using 'android.util.Log' instead of a Signal Logger", fix);
}
if (evaluator.isMemberInClass(method, "org.signal.glide.Log")) {
LintFix fix = quickFixIssueLog(call);
context.report(LOG_NOT_SIGNAL, call, context.getLocation(call), "Using 'org.signal.glide.Log' instead of a Signal Logger", fix);
}
if (evaluator.isMemberInClass(method, "org.whispersystems.libsignal.logging.Log")) {
LintFix fix = quickFixIssueLog(call);
context.report(LOG_NOT_APP, call, context.getLocation(call), "Using Signal server logger instead of app level Logger", fix);

View file

@ -17,6 +17,7 @@ public final class LogDetectorTest {
private static final TestFile serviceLogStub = java(readResourceAsString("ServiceLogStub.java"));
private static final TestFile appLogStub = java(readResourceAsString("AppLogStub.java"));
private static final TestFile glideLogStub = java(readResourceAsString("GlideLogStub.java"));
@Test
public void androidLogUsed_LogNotSignal_2_args() {
@ -153,6 +154,30 @@ public final class LogDetectorTest {
.expectFixDiffs("");
}
@Test
public void glideLogUsed_LogNotSignal_2_args() {
lint()
.files(glideLogStub,
java("package foo;\n" +
"import org.signal.glide.Log;\n" +
"public class Example {\n" +
" public void log() {\n" +
" Log.d(\"TAG\", \"msg\");\n" +
" }\n" +
"}")
)
.issues(SignalLogDetector.LOG_NOT_SIGNAL)
.run()
.expect("src/foo/Example.java:5: Error: Using 'org.signal.glide.Log' instead of a Signal Logger [LogNotSignal]\n" +
" Log.d(\"TAG\", \"msg\");\n" +
" ~~~~~~~~~~~~~~~~~~~\n" +
"1 errors, 0 warnings")
.expectFixDiffs("Fix for src/foo/Example.java line 5: Replace with org.signal.core.util.logging.Log.d(\"TAG\", \"msg\"):\n" +
"@@ -5 +5\n" +
"- Log.d(\"TAG\", \"msg\");\n" +
"+ org.signal.core.util.logging.Log.d(\"TAG\", \"msg\");");
}
private static String readResourceAsString(String resourceName) {
InputStream inputStream = ClassLoader.getSystemClassLoader().getResourceAsStream(resourceName);
assertNotNull(inputStream);

View file

@ -0,0 +1,41 @@
package org.signal.glide;
public class Log {
public static String tag(Class<?> clazz) {
return "";
}
public static void v(String tag, String msg) {
}
public static void v(String tag, String msg, Throwable tr) {
}
public static void d(String tag, String msg) {
}
public static void d(String tag, String msg, Throwable tr) {
}
public static void i(String tag, String msg) {
}
public static void i(String tag, String msg, Throwable tr) {
}
public static void w(String tag, String msg) {
}
public static void w(String tag, String msg, Throwable tr) {
}
public static void w(String tag, Throwable tr) {
}
public static void e(String tag, String msg) {
}
public static void e(String tag, String msg, Throwable tr) {
}
}