Skip to content

Commit 6040cb2

Browse files
authored
Update linting to forbid System.out/err (#8695)
* Add forbidden System out/errs and suppressmethods * Add print statement that should fail CI * Remove print statement * Adjust test lines * Extra SuppressForbidden line * Address missed line number * Exclude all of smoke-tests * Fix WeaverTest suppression * Fix smoke tests suppression
1 parent 381aa33 commit 6040cb2

File tree

19 files changed

+63
-0
lines changed

19 files changed

+63
-0
lines changed

dd-java-agent/agent-crashtracking/src/main/java/com/datadog/crashtracking/CrashUploader.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -121,6 +121,7 @@ public void upload(@Nonnull List<Path> files) throws IOException {
121121
}
122122
}
123123

124+
@SuppressForbidden
124125
boolean uploadToLogs(@Nonnull Path file) {
125126
try {
126127
uploadToLogs(new String(Files.readAllBytes(file), StandardCharsets.UTF_8), System.out);
@@ -156,6 +157,7 @@ void uploadToLogs(@Nonnull String message, @Nonnull PrintStream out) throws IOEx
156157
}
157158

158159
// @VisibleForTesting
160+
@SuppressForbidden
159161
static String extractErrorKind(String fileContent) {
160162
Matcher matcher = ERROR_MESSAGE_PATTERN.matcher(fileContent);
161163
if (!matcher.find()) {

dd-java-agent/agent-logging/src/main/java/datadog/trace/logging/simplelogger/SLCompatSettings.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
import datadog.trace.logging.LogLevel;
44
import datadog.trace.logging.LogReporter;
55
import datadog.trace.logging.PrintStreamWrapper;
6+
import de.thetaphi.forbiddenapis.SuppressForbidden;
67
import java.io.File;
78
import java.io.FileOutputStream;
89
import java.io.IOException;
@@ -169,6 +170,7 @@ public void appendFormattedDate(StringBuilder builder, long timeMillis, long sta
169170
}
170171
}
171172

173+
@SuppressForbidden
172174
static PrintStream getPrintStream(String logFile) {
173175
PrintStreamWrapper printStreamWrapper;
174176
switch (logFile.toLowerCase(Locale.ROOT)) {

dd-java-agent/agent-tooling/src/main/java/datadog/trace/agent/tooling/AgentCLI.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
import datadog.trace.bootstrap.InitializationTelemetry;
1010
import datadog.trace.bootstrap.instrumentation.api.AgentSpan;
1111
import datadog.trace.bootstrap.instrumentation.api.AgentTracer;
12+
import de.thetaphi.forbiddenapis.SuppressForbidden;
1213
import java.io.File;
1314
import java.io.FileOutputStream;
1415
import java.io.IOException;
@@ -39,6 +40,7 @@ public final class AgentCLI {
3940
}
4041

4142
/** Prints all known integrations in alphabetical order. */
43+
@SuppressForbidden
4244
public static void printIntegrationNames() {
4345
Set<String> names = new TreeSet<>();
4446
for (InstrumenterModule module : InstrumenterIndex.readIndex().modules()) {
@@ -55,6 +57,7 @@ public static void printIntegrationNames() {
5557
* @param count how many traces to send, negative means send forever
5658
* @param interval the interval (in seconds) to wait for each trace
5759
*/
60+
@SuppressForbidden
5861
public static void sendSampleTraces(final int count, final double interval) throws Exception {
5962
Agent.startDatadogTracer(InitializationTelemetry.noOpInstance());
6063

@@ -93,6 +96,7 @@ public static void sendOomeEvent(String taglist) throws Exception {
9396
OOMENotifier.sendOomeEvent(taglist);
9497
}
9598

99+
@SuppressForbidden
96100
public static void scanDependencies(final String[] args) throws Exception {
97101
Class depClass =
98102
Class.forName(

dd-java-agent/agent-tooling/src/main/java/datadog/trace/agent/tooling/muzzle/MuzzleVersionScanPlugin.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
import datadog.trace.agent.tooling.bytebuddy.SharedTypePools;
77
import datadog.trace.agent.tooling.bytebuddy.matcher.ClassLoaderMatchers;
88
import datadog.trace.agent.tooling.bytebuddy.matcher.HierarchyMatchers;
9+
import de.thetaphi.forbiddenapis.SuppressForbidden;
910
import java.io.IOException;
1011
import java.util.ArrayList;
1112
import java.util.Arrays;
@@ -31,6 +32,7 @@ public class MuzzleVersionScanPlugin {
3132
HierarchyMatchers.registerIfAbsent(HierarchyMatchers.simpleChecks());
3233
}
3334

35+
@SuppressForbidden
3436
public static void assertInstrumentationMuzzled(
3537
final ClassLoader instrumentationLoader,
3638
final ClassLoader testApplicationLoader,
@@ -139,6 +141,7 @@ private static Map<String, byte[]> createHelperMap(final InstrumenterModule modu
139141
return helperMap;
140142
}
141143

144+
@SuppressForbidden
142145
public static void printMuzzleReferences(final ClassLoader instrumentationLoader) {
143146
for (InstrumenterModule module :
144147
ServiceLoader.load(InstrumenterModule.class, instrumentationLoader)) {

dd-java-agent/agent-tooling/src/main/java/datadog/trace/agent/tooling/muzzle/ReferenceCreator.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55

66
import datadog.trace.agent.tooling.AdviceShader;
77
import datadog.trace.bootstrap.Constants;
8+
import de.thetaphi.forbiddenapis.SuppressForbidden;
89
import java.io.InputStream;
910
import java.util.ArrayDeque;
1011
import java.util.HashSet;
@@ -47,6 +48,7 @@ public class ReferenceCreator extends ClassVisitor {
4748
* @return Map of [referenceClassName -> Reference]
4849
* @throws IllegalStateException if class is not found or unable to be loaded.
4950
*/
51+
@SuppressForbidden
5052
public static Map<String, Reference> createReferencesFrom(
5153
final String entryPointClassName, final AdviceShader adviceShader, final ClassLoader loader)
5254
throws IllegalStateException {

dd-java-agent/agent-tooling/src/main/java/datadog/trace/agent/tooling/profiler/EnvironmentChecker.java

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package datadog.trace.agent.tooling.profiler;
22

33
import datadog.trace.api.Platform;
4+
import de.thetaphi.forbiddenapis.SuppressForbidden;
45
import java.io.File;
56
import java.io.IOException;
67
import java.net.URL;
@@ -16,6 +17,7 @@
1617
import java.util.jar.JarFile;
1718

1819
public final class EnvironmentChecker {
20+
@SuppressForbidden
1921
public static boolean checkEnvironment(String temp) {
2022
if (!Platform.isJavaVersionAtLeast(8)) {
2123
System.out.println("Profiler requires Java 8 or newer");
@@ -52,6 +54,7 @@ public static boolean checkEnvironment(String temp) {
5254
return true;
5355
}
5456

57+
@SuppressForbidden
5558
private static boolean checkJFR() {
5659
if (Platform.isOracleJDK8()) {
5760
System.out.println(
@@ -66,6 +69,7 @@ private static boolean checkJFR() {
6669
}
6770
}
6871

72+
@SuppressForbidden
6973
private static boolean checkDdprof() {
7074
if (!Platform.isLinux()) {
7175
System.out.println("Datadog profiler is only supported on Linux.");
@@ -76,6 +80,7 @@ private static boolean checkDdprof() {
7680
}
7781
}
7882

83+
@SuppressForbidden
7984
private static boolean checkTempLocation(String temp) {
8085
// Check if the temp directory is writable
8186
if (temp == null || temp.isEmpty()) {
@@ -161,6 +166,7 @@ public FileVisitResult postVisitDirectory(Path dir, IOException exc)
161166
return rslt;
162167
}
163168

169+
@SuppressForbidden
164170
private static boolean checkCreateTempFile(Path target) {
165171
// create a file to check if the directory is writable
166172
try {
@@ -176,6 +182,7 @@ private static boolean checkCreateTempFile(Path target) {
176182
return false;
177183
}
178184

185+
@SuppressForbidden
179186
private static boolean checkLoadLibrary(Path target) {
180187
if (!Platform.isLinux()) {
181188
// we are loading the native library only on linux
@@ -199,6 +206,7 @@ private static boolean checkLoadLibrary(Path target) {
199206
}
200207
}
201208

209+
@SuppressForbidden
202210
private static boolean extractSoFromJar(Path target) throws Exception {
203211
URL jarUrl = EnvironmentChecker.class.getProtectionDomain().getCodeSource().getLocation();
204212
try (JarFile jarFile = new JarFile(new File(jarUrl.toURI()))) {

dd-java-agent/instrumentation-annotation-processor/src/main/java/datadog/apt/ByteBuddyAdviceProcessor.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
import static datadog.apt.LogUtils.*;
55
import static datadog.apt.TypeUtils.*;
66

7+
import de.thetaphi.forbiddenapis.SuppressForbidden;
78
import java.util.Set;
89
import javax.annotation.processing.AbstractProcessor;
910
import javax.annotation.processing.RoundEnvironment;
@@ -30,6 +31,7 @@ public SourceVersion getSupportedSourceVersion() {
3031
}
3132

3233
@Override
34+
@SuppressForbidden
3335
public boolean process(Set<? extends TypeElement> annotations, RoundEnvironment roundEnv) {
3436
try {
3537
processImpl(annotations, roundEnv);

dd-java-agent/instrumentation/weaver/src/main/scala/datadog/trace/instrumentation/weaver/WeaverIntegrationTestRunner.scala

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ import java.io.PrintStream
88
import scala.jdk.CollectionConverters.*
99

1010
object WeaverIntegrationTestRunner {
11+
@de.thetaphi.forbiddenapis.SuppressForbidden
1112
def runTests(testNames: java.util.List[String]): Unit = {
1213
class WeaverTestEventHandler() extends EventHandler {
1314
val events = scala.collection.mutable.ListBuffer.empty[sbt.testing.Event]

dd-java-agent/load-generator/src/main/java/datadog/loadgenerator/LoadGenerator.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package datadog.loadgenerator;
22

33
import com.google.common.util.concurrent.RateLimiter;
4+
import de.thetaphi.forbiddenapis.SuppressForbidden;
45
import io.opentracing.Scope;
56
import io.opentracing.Span;
67
import io.opentracing.Tracer;
@@ -53,6 +54,7 @@ public class LoadGenerator implements Callable<Integer> {
5354
private final AtomicLong tracesSent = new AtomicLong();
5455

5556
@Override
57+
@SuppressForbidden
5658
public Integer call() throws Exception {
5759
rateLimiter = RateLimiter.create(rate, warmupPeriod, TimeUnit.SECONDS);
5860

dd-java-agent/src/main/java/datadog/trace/bootstrap/AgentBootstrap.java

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -59,6 +59,7 @@ public static void premain(final String agentArgs, final Instrumentation inst) {
5959
agentmain(agentArgs, inst);
6060
}
6161

62+
@SuppressForbidden
6263
public static void agentmain(final String agentArgs, final Instrumentation inst) {
6364
BootstrapInitializationTelemetry initTelemetry;
6465

@@ -181,6 +182,7 @@ static boolean exceptionCauseChainContains(Throwable ex, String exClassName) {
181182
return false;
182183
}
183184

185+
@SuppressForbidden
184186
private static boolean alreadyInitialized() {
185187
if (initialized) {
186188
System.err.println(
@@ -191,6 +193,7 @@ private static boolean alreadyInitialized() {
191193
return false;
192194
}
193195

196+
@SuppressForbidden
194197
private static boolean lessThanJava8() {
195198
try {
196199
return lessThanJava8(System.getProperty("java.version"), System.err);
@@ -286,6 +289,7 @@ static int parseJavaMajorVersion(String version) {
286289
return major;
287290
}
288291

292+
@SuppressForbidden
289293
static boolean shouldAbortDueToOtherJavaAgents() {
290294
// Simply considering having multiple agents
291295

@@ -322,6 +326,7 @@ public static void main(final String[] args) {
322326
AgentJar.main(args);
323327
}
324328

329+
@SuppressForbidden
325330
private static synchronized URL installAgentJar(final Instrumentation inst)
326331
throws IOException, URISyntaxException {
327332
// First try Code Source
@@ -364,6 +369,7 @@ private static URL appendAgentToBootstrapClassLoaderSearch(
364369
return ddJavaAgentJarURL;
365370
}
366371

372+
@SuppressForbidden
367373
private static File getAgentFileFromJavaagentArg(List<File> agentFiles) {
368374
if (agentFiles.isEmpty()) {
369375
System.err.println("Could not get bootstrap jar from -javaagent arg: no argument specified");
@@ -377,6 +383,7 @@ private static File getAgentFileFromJavaagentArg(List<File> agentFiles) {
377383
}
378384
}
379385

386+
@SuppressForbidden
380387
private static List<File> getAgentFilesFromVMArguments() {
381388
if (agentFiles == null) {
382389
agentFiles = new ArrayList<>();

0 commit comments

Comments
 (0)