我想从我的java代码中删除/注释System.out.println
的所有出现。
此System.out.println
可能位于if
,if else
,for
,while
内或任何位置。由于源代码文件较大,我无法手动完成。
请帮我自动完成此过程。是否有任何重构工具可用于此任务? 我可以使用eclipse JDT吗?
答案 0 :(得分:6)
<强>更新强>
如上所述here创建一个NullOutPut
public final DevNull {
public final static PrintStream out = new PrintStream(new OutputStream() {
public void close() {}
public void flush() {}
public void write(byte[] b) {}
public void write(byte[] b, int off, int len) {}
public void write(int b) {}
} );
}
并将System.out.print
替换为DevNull.out.print
然后切换到日志框架,这将允许您轻松处理东西
<强>链接强>
答案 1 :(得分:3)
你可以在源代码文件中使用原始查找/替换功能来注释掉(或删除)语句,但无论正则表达式是什么都可以轻易破解,所以也许你最好注意记录像log4j或slf4j这样的框架。
大图片:不是使用通常的System.out.println()
,而是使用一行代码,例如:
logger.debug("Just entered main");
日志框架可以配置with a simple property file,因此您可以拥有多个appender(控制台,文件,数据库等),并根据需要单独关闭每个appender(例如控制台appender)。要切换到日志记录API,您仍然需要对源文件执行原始查找/替换,并且可能手动修复一些事情,无论是在IDE中,还是使用如下命令:
find src/ -name '*.java' | \
xargs sed -i -e 's/System.out.println/logger.verbose/g'
答案 2 :(得分:2)
如果你不使用IDE,在Linux上:
sed '/System.out.println/d' %YOUR_PROJ_DIR%/*.java
如果您安装了cygwin,在Windows上可以执行相同的操作。
答案 3 :(得分:2)
正如Jigar Joshi所说,使用 find&amp;替换方法可能对您有很大帮助,特别是如果您不干扰System.out.println
之外的代码。
如果编辑/更改源代码不是必须,我会提出不同的解决方案。您可以在驱动程序中禁用 System.out
流,然后这些语句不会打印任何内容。你只需要这样设置:
System.setOut(new PrintStream(new OutputStream() {
public void write(int b) {
// No operation.
}
public void close() {}
public void flush() {}
public void write(byte[] b) {}
public void write(byte[] b, int off, int len) {}
public void write(int b) {}
}));
答案 4 :(得分:1)
我已经使用jEdit文本编辑器来完成这样的任务。可能还有其他文本编辑器也可以这样做,重要的功能是查找和替换目录/子目录中的搜索。
我不是Java程序员,但此解决方案适用于任何语言。希望有所帮助。祝你好运!
答案 5 :(得分:0)
做一个简单的查找和替换。应该这样做。
答案 6 :(得分:0)
您可以在应用程序中使所有System.out.println
不在控制台中打印任何内容。创建一个类:
import java.io.PrintStream;
public class MyStream extends PrintStream {
private static final MyStream INSTANCE = new MyStream();
public static void init() {
System.setOut(INSTANCE);
}
private MyStream() {
super(System.out);
}
@Override
public void println(Object x) {
return;
}
@Override
public void println(String x) {
return;
}
}
将其用作:
public class Test {
public static void main(String... args) {
MyStream.init();
System.out.println("This line will not print");
}
}
将不再打印。
答案 7 :(得分:0)
我们有一个实现的插件,可以搜索和注释Java代码中的所有System.out.println,前提是您使用Eclipse作为Java开发的IDE。
通过以下链接阅读并下载该插件 http://eclipseo.blogspot.in/2013/05/commenting-systemoutprintln-from.html