import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class CodeInstrumenter {
private static final String INSTRUMENTATION_START = "/*--- START INSTRUMENTATION ---*/";
private static final String INSTRUMENTATION_END = "/*--- END INSTRUMENTATION ---*/";
private static final String LOG_START = "System.out.println(\"DEBUG: \");";
private static final String LOG_END = "System.out.println(\"DEBUG: \");";
public static String instrumentCode(String code) {
List<String> lines = new ArrayList<>();
for (String line : code.split("\\r?\\n")) {
lines.add(line);
}
StringBuilder instrumentedCode = new StringBuilder();
boolean inInstrumentationBlock = false;
for (int i = 0; i < lines.size(); i++) {
String line = lines.get(i);
if (line.contains(INSTRUMENTATION_START)) {
instrumentedCode.append(line).append("\n");
inInstrumentationBlock = true;
} else if (line.contains(INSTRUMENTATION_END)) {
instrumentedCode.append(line).append("\n");
inInstrumentationBlock = false;
} else if (inInstrumentationBlock) {
instrumentedCode.append(LOG_START).append("\n");
instrumentedCode.append(line).append("\n");
instrumentedCode.append(LOG_END).append("\n");
} else {
instrumentedCode.append(line).append("\n");
}
}
return instrumentedCode.toString();
}
public static void main(String[] args) {
String code = """
public class MyClass {
public void myMethod() {
int x = 10;
int y = 20;
int sum = x + y;
System.out.println("Sum: " + sum);
}
}
""";
String instrumentedCode = instrumentCode(code);
System.out.println(instrumentedCode);
}
}
Add your comment