1. import java.io.IOException;
  2. import java.util.ArrayList;
  3. import java.util.List;
  4. import java.util.regex.Matcher;
  5. import java.util.regex.Pattern;
  6. public class CodeInstrumenter {
  7. private static final String INSTRUMENTATION_START = "/*--- START INSTRUMENTATION ---*/";
  8. private static final String INSTRUMENTATION_END = "/*--- END INSTRUMENTATION ---*/";
  9. private static final String LOG_START = "System.out.println(\"DEBUG: \");";
  10. private static final String LOG_END = "System.out.println(\"DEBUG: \");";
  11. public static String instrumentCode(String code) {
  12. List<String> lines = new ArrayList<>();
  13. for (String line : code.split("\\r?\\n")) {
  14. lines.add(line);
  15. }
  16. StringBuilder instrumentedCode = new StringBuilder();
  17. boolean inInstrumentationBlock = false;
  18. for (int i = 0; i < lines.size(); i++) {
  19. String line = lines.get(i);
  20. if (line.contains(INSTRUMENTATION_START)) {
  21. instrumentedCode.append(line).append("\n");
  22. inInstrumentationBlock = true;
  23. } else if (line.contains(INSTRUMENTATION_END)) {
  24. instrumentedCode.append(line).append("\n");
  25. inInstrumentationBlock = false;
  26. } else if (inInstrumentationBlock) {
  27. instrumentedCode.append(LOG_START).append("\n");
  28. instrumentedCode.append(line).append("\n");
  29. instrumentedCode.append(LOG_END).append("\n");
  30. } else {
  31. instrumentedCode.append(line).append("\n");
  32. }
  33. }
  34. return instrumentedCode.toString();
  35. }
  36. public static void main(String[] args) {
  37. String code = """
  38. public class MyClass {
  39. public void myMethod() {
  40. int x = 10;
  41. int y = 20;
  42. int sum = x + y;
  43. System.out.println("Sum: " + sum);
  44. }
  45. }
  46. """;
  47. String instrumentedCode = instrumentCode(code);
  48. System.out.println(instrumentedCode);
  49. }
  50. }

Add your comment