私のコードベースでAPI(私の場合はjava.util.Logging)へのすべての呼び出しをコメントアウトしたいと思います。簡単にこれを実現する良いライブラリがありますか? 私はEclipse ASTParserを試しましたが、Eclipseに縛られています。私は現在、PMDのパーサと闘っています。私はまだそれを見ていないが、ジャックポットはこれを行うことができますか?その他の提案はありますか?Javaソースコード内の特定のAPIへの呼び出しをコメントアウトする方法
答えて
あなたはこのコメントアウトしたい場合:
Log.doLog("Here is a" /* With a block comment to make it hard */
+ " multiline log statement"
); doSomethingEssential();
をあなたには、いくつかの場所のコメントを置くために知っておく延長にコードを解析する必要があると思いますので、あなたはそれのトリッキー時間を持っていると思います。私。代わりにこれを行うには
// Log.doLog("Here is a" /* With a block comment to make it hard */
// + " multiline log statement"
// ); // Line break inserted here
doSomethingEssential();
それははるかに些細です:あなたはこれを行うことができるようにしたい
if (false) Log.doLog("Here is a" /* With a block comment to make it hard */
+ " multiline log statement"
);
を一部のコンパイラおよびログ文がアウトに最適化されてしまう「偽の場合」最終的な.classファイルにはなりません。
そのように、あなたが必要とするすべてのコードのトリッキーな解析に頼ることなく
"if (false) Log.doLog(" or
"if (true) Log.doLog("
どちらかと
"Log.doLog("
のすべての出現箇所を置き換えるビルドスクリプトのステップを検索/置換です。
izb、私はこのソリューションを使用して終了しました。私はこの変更を行うためにsedを使いました。手元にある議論に何も追加しない、役に立たない、ユーモラスではあるが不自然な、不思議なコメントを作るのではなく、この解決策を書く時間をとってくれてありがとう。 :-) –
これはあなたが求めているのではないことを知っていますが、設定ファイルにログOFFを有効にすることができます。
ありがとうございましたビルは、機能的には同じものを達成していますが、それは私が何をしているかではありません。 logger.log(..)呼び出しをコメントアウトして、引数が評価されないようにしたかったのです。 –
問題ありません。私はいつもそれを削除するよりむしろこれを残すつもりです。 –
slf4jのjul-to-slf4jモジュールを使用すると、すべてのjava.util.logging呼び出しをslf4jにリダイレクトできます。次に、slf4j-nopモジュールを選択してすべてのロギングステートメントを無視できます。
これが実行するのですか、本当にこれらのソース行を削除する必要はありますか?
ツールを使用してすべてのログコードをコメントアウトまたは削除することは悪い考えかもしれません。
あなたが気づかない副作用のコードがある場合があります:
while (x > 5)
{
// some code here
Logger.global.finest("X is now bigger: " + (x++));
}
は本当の明白な例のthatsが、それはロガーコール内部のメソッド呼び出しか何かと非常に微妙である可能性があります。
あなたがあなたのコメントで言うように、引数の評価を避けるために探している場合は、私が想定し...ログ出力をオフにし、または手動で全部を通過し、おそらく
これがあなたのコードにある場合、あなたは副作用に値します;-) – Robin
安全です
logger.log("Expensive toString() operation on " + this);
を無効にしますか?
それが事実だし、それはあなたのコードを散在いた場合、私は上記のすべてのインスタンスを囲むようにAspectJのようなものを使用したい:
if (loggingEnabled) {
...
}
とfalseにloggingEnabled
フラグを設定します。
*なぜ*誰かがこれを投票したのを知ってうれしいですか? –
- 1. DLLへの呼び出しからAPIへの呼び出し
- 2. テーブルへのすべての挿入呼び出しを特定する方法
- 3. ノードjs npmモジュールのソースコードへのメソッド呼び出しをトレースする方法は?
- 4. 特定のPythonバージョンをscript.py内で呼び出す方法 - Windows
- 5. api restへの呼び出しを制限する方法
- 6. Retrofit2 - 特定のAPI呼び出しのみをキャッシュする方法
- 7. 特定のサブドメインへの特定の呼び出しを制限しますか?
- 8. コードイグナイタを使用してデータベース内の特定のデータを呼び出す方法
- 9. ネイティブjava関数呼び出しのソースコードを見つける方法
- 10. ローカルRubyファイルへのAPI呼び出しの作成方法
- 11. APIへのJavaScript jsonの呼び出し
- 12. カスタムルールを使用してFxCopの特定のメソッドへの呼び出しを検出する方法 - チェックメソッド
- 13. 各api呼び出しの前に自動的にapi呼び出しを呼び出す方法
- 14. 別のAPI呼び出し内でAPI呼び出しを行いますか?
- 15. スクロールテーブルビュー中に特定のスクロールポイントでapiを呼び出します。
- 16. circleCIのapiを呼び出す方法
- 17. リスト内のアイテムへのAndroid API呼び出し
- 18. メソッドの特定の呼び出しへの仕様の分離
- 19. 特定の期間内に特定の時間内にcurlを呼び出す
- 20. Jquery Ajax Web APIへの呼び出し
- 21. Javaで特定のクラスメソッドを呼び出す(ポリモーフィズムなし)
- 22. Javaパッケージの呼び出し方法
- 23. iOSで特定のユーザーのデフォルトを呼び出す方法
- 24. 出力バッファへの呼び出しを追跡する方法
- 25. JavaのストリームAPI呼び出しとは
- 26. Harvest API:未定義のメソッドへの呼び出しHarvestAPI :: getActiveProjects
- 27. Javaのインターフェイスの特定の実装クラスを呼び出す
- 28. 特定の変数を呼び出すVBA残りのAPI
- 29. TRON API呼び出しでヘッダーを設定する方法は?
- 30. 特定の条件でループ内で別のJava GUIプログラムを呼び出す
私はこれを何年も使っていないので、これを "本当の"答えにするつもりはありませんが、Java文法を持ち、ASTノードのコメントをサポートしているANTLRもチェックアウトできます。自分のPMDルールを稼働させることは決して大したことではありませんでしたが、PMD自体ではなくEclipse統合を責めています。 – erickson