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) { 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) { 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.PorterDuff;
import android.graphics.Rect; 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.APNGReader;
import org.signal.glide.apng.io.APNGWriter; import org.signal.glide.apng.io.APNGWriter;
import org.signal.glide.common.decode.Frame; import org.signal.glide.common.decode.Frame;

View File

@@ -21,7 +21,7 @@ import android.os.Message;
import androidx.annotation.NonNull; import androidx.annotation.NonNull;
import androidx.vectordrawable.graphics.drawable.Animatable2Compat; 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.decode.FrameSeqDecoder;
import org.signal.glide.common.loader.Loader; import org.signal.glide.common.loader.Loader;

View File

@@ -15,7 +15,7 @@ import android.os.Looper;
import androidx.annotation.Nullable; import androidx.annotation.Nullable;
import androidx.annotation.WorkerThread; 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.executor.FrameDecoderExecutor;
import org.signal.glide.common.io.Reader; import org.signal.glide.common.io.Reader;
import org.signal.glide.common.io.Writer; 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); 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")) { if (evaluator.isMemberInClass(method, "org.whispersystems.libsignal.logging.Log")) {
LintFix fix = quickFixIssueLog(call); LintFix fix = quickFixIssueLog(call);
context.report(LOG_NOT_APP, call, context.getLocation(call), "Using Signal server logger instead of app level Logger", fix); 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 serviceLogStub = java(readResourceAsString("ServiceLogStub.java"));
private static final TestFile appLogStub = java(readResourceAsString("AppLogStub.java")); private static final TestFile appLogStub = java(readResourceAsString("AppLogStub.java"));
private static final TestFile glideLogStub = java(readResourceAsString("GlideLogStub.java"));
@Test @Test
public void androidLogUsed_LogNotSignal_2_args() { public void androidLogUsed_LogNotSignal_2_args() {
@@ -153,6 +154,30 @@ public final class LogDetectorTest {
.expectFixDiffs(""); .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) { private static String readResourceAsString(String resourceName) {
InputStream inputStream = ClassLoader.getSystemClassLoader().getResourceAsStream(resourceName); InputStream inputStream = ClassLoader.getSystemClassLoader().getResourceAsStream(resourceName);
assertNotNull(inputStream); 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) {
}
}