2017-02-28 4 views
1

jqassistantのスキャンプロセスを詳しく知りたいと思います。たとえば、すべてのJarファイルとすべてのクラス、または自分のクラスから直接参照するクラスだけをスキャンします。このような質問に答えるために、デバッグはしばしば良い選択です。どのように通常あなたはmavenプラグインとしてjqassistantを開始します。 Debug maven pluginはそれほど簡単ではありません。だから、コマンドラインクライアントをチェックアウトする方が良いと思った。デバッグは正常に動作しますが、残念ながら私は全く異なる結果を得ています。ここに私のパラメータscan --files ${project_loc:/sze}/target/classes,${project_loc:/sze}/target/test-classes --storeDirectory c:/trash/neo4jがあります。出力は、それが441と106のクラスをスキャンするmaven-buildと同じです。eclipseでjQassistantをデバッグする方法

誰でも私にヒントを教えてもらえますか、コマンドラインコールで何が問題なのですか?または、最初から質問に答える最良の解決策は何か。

答えて

1

私は最良の選択肢は、すべての構成とクラスパスの問題が解決されたので、maven-pluginをデバッグすることだと思います。これは私が思ったほど複雑ではありません。 Eclipseワークスペースに

  1. クローンプロジェクトgit clone https://github.com/buschmais/jqa-maven-plugin.gitと安定したバージョンをチェックアウト、例えばgit checkout -b 1.2.0
  2. インポートjqassistant-maven-plugin:次のステップは私の問題を解決します。
  3. maven-run-configurationを準備し、-Xdebug -Xnoagent -Djava.compile=NONE -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=5005をVM引数として追加します。
  4. Remote Java Applicationのデバッグ構成を作成し、Projectjqassistant-maven-pluginとして選択します。 Connection Propertiesからlocalhost5005
  5. methodeスキャンでは、ScannerImplにブレークポイントを設定します。さらに良い候補はClassFileScannerPluginClassVisitorです。
  6. maven実行コンフィギュレーションを開始し、デバッグコンフィギュレーションを開始します。

コードを簡単にデバッグできます。残念なことに、多くのビジターパターンは、その動作を理解することを困難にします。

私の分析に基づいて、クラスとテストクラスのファイルだけが分析されると言えます。ライブラリからのすべてのクラスは、参照によってデータベースに送られます。私はorg.objectweb.asm.ClassReaderが単にクラスパスにない参照を無視しないと思います。これは、コマンドラインのバージョンがそれほど多くの要素を見つけられない理由です。

+0

Mavenプラグインは、どの要素がスキャンされるかを決定します。デフォルトでは、メインとテスト成果物のクラスフォルダがあります。 ClassFileScannerPluginは、これらのフォルダにある各.classファイルに対してトリガされます。さらに、scanIncludesオプションを使用すると、追加するファイル(追加のsrc/main/foldersなど)を追加することができます Mavenモジュールのファイル内容全体をデフォルトとしてスキャンする方法がありますが、これは機能要求です。 –

関連する問題