System.out.println
Java コードからのすべての出現箇所を削除/コメントしたいと考えています。これは、、、または任意の場所にSystem.out.println
ある可能性があります。ソースコードファイルが大きいため、手動で行うことはできません。if
if else
for
while
このプロセスを自動化するのを手伝ってください。このタスクに使用できるリファクタリング ツールはありますか? これにEclipse JDTを使用できますか?
System.out.println
Java コードからのすべての出現箇所を削除/コメントしたいと考えています。これは、、、または任意の場所にSystem.out.println
ある可能性があります。ソースコードファイルが大きいため、手動で行うことはできません。if
if else
for
while
このプロセスを自動化するのを手伝ってください。このタスクに使用できるリファクタリング ツールはありますか? これにEclipse JDTを使用できますか?
アップデート
ここで述べたように、 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
その後、簡単に処理できるログ フレームワークに切り替えます
リンク済み
ソースコードファイルで生の検索/置換機能を使用してステートメントをコメントアウト (または削除) することもできますが、どのような正規表現も簡単に壊れてしまう可能性があるため、log4j や slf4j などのロギング フレームワークに注意した方がよいでしょう。
まず全体像: 通常の を使用する代わりに、System.out.println()
次のようなコード行を使用することになります。
logger.debug("Just entered main");
ロギング フレームワークは単純なプロパティ ファイルで構成できるため、複数のアペンダー (コンソール、ファイル、データベースなど) を用意し、必要に応じてそれぞれを個別にシャットダウンできます (たとえば、コンソール アペンダー)。ロギング API に切り替えるには、ソース ファイルに対して未加工の検索/置換を実行する必要があります。また、IDE 内で、または次のようなコマンドを使用して、いくつかのことを手動で修正する必要があります。
find src/ -name '*.java' | \
xargs sed -i -e 's/System.out.println/logger.verbose/g'
Jigar Joshi が言ったように、検索と置換のアプローチを使用すると、特に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) {}
}));
Linux で IDE を使用しない場合:
sed '/System.out.println/d' %YOUR_PROJ_DIR%/*.java
Windows では、cygwin がインストールされていれば同じことができます。
jEdit テキスト エディターを使用して、このようなタスクを実行しました。おそらく、同じことができる他のテキスト エディターがあります。重要な機能は、ディレクトリ/サブディレクトリの検索と置換です。
私は Java プログラマーではありませんが、このソリューションはどの言語でも機能するはずです。それが役立つことを願っています。幸運を!
簡単な検索と置換を行います。それはすべきです。
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");
}
}
はもう印刷されません。