問題タブ [call-graph]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
java - コールグラフを生成するための優れたアルゴリズム?
IRコードを静的にスキャンして実行せずに、特定の中間表現のコールグラフを生成するコードを作成しています。IRコード自体はそれほど複雑ではなく、関数呼び出しシーケンスがどのように見えるかをよく理解しているので、必要なのは呼び出しをトレースすることだけです。私は現在それを明白な方法でやっています:
- 私たちがどこにいるかを追跡する
- 関数呼び出しに遭遇した場合は、その場所に分岐し、実行して戻ってきます
- 分岐している間、発信者と着信者の間にエッジを置きます
私は自分が到達しているところに満足していますが、ここで車輪の再発明をしたり、コーナーケースに直面したりしないようにしたいと思います。これを効率的に行う、受け入れられている優れたアルゴリズム(および/またはデザインパターン)があるかどうか疑問に思っていますか?
更新: IRコードは、自作のJavaに似た言語からのバイトコードの逆アセンブルであり、Jasmine仕様のように見えます。
c++ - C++ コードの呼び出しグラフを生成する方法
特定の関数にヒットしているすべての可能な実行パスを見つけるための呼び出しグラフを生成しようとしています (この関数につながる多くのパスがあるため、すべてのパスを手動で把握する必要はありません) )。例えば:
Codeviz と Doxygen を試してみましたが、どちらの結果もターゲット関数 D の呼び出し先しか表示されません。私の場合、D はオブジェクトがスマート ポインター内にラップされるクラスのメンバー関数です。クライアントは、D を呼び出すために、常にファクトリを介してスマート ポインター オブジェクトを取得します。
これを達成する方法を知っている人はいますか?
javascript - JavaScript 用の静的 Call-Graph や Control-Flow-Graph API はありますか?
JavaScript 用の Call-Graph や Control-Flow-Graph ジェネレーターはありますか?
コール グラフ - http://en.wikipedia.org/wiki/Call_graph
制御フロー グラフ - http://en.wikipedia.org/wiki/Control_flow_graph
編集: API/コードを使用してグラフにアクセスできる静的ツールを特に探しています
c++ - コールフローグラフを生成するためのツール[CC++ solaris linux]
私はIDAが大好きですが、Solarisでこのプロジェクトに取り組んでいます。私はLinuxマシンを持っていますが、IDAと同じリーグに何もない場合は、管理者にそのライセンスを購入するように説得します。
それを除けば、私は別の提案を探しています。IDAの他の機能のいくつかは便利ですが、現時点で必要な主なものは、ソースコードに基づかないコールフローグラフジェネレーターです。ビルドステップからの追加の出力が必要な場合は問題ありませんが、確認する必要のあるライブラリの一部にはソースがありません。
これまでのところ、私の最良の選択はValgrindのCallgrind、lida、およびgprofのようです。それ以上の提案は大歓迎です。
re:gprof、Windriverによって提供されたGNUコンパイラセットには、プロファイリングのための機能を提供するために通常GNUコンパイラで提供されるライブラリがいくつかありません。これは、より一般的な問題に対する優れた解決策ですが、今のところ、最初に他の解決策を試すことを選択しています。
編集いくつかのRationalツール(Purify、Quantifyなど)もこれに適している可能性があります。私はIDAと同じ船に乗っていますが、グーグルをしている人がその提案が役立つかもしれないと思います。
edit2Valgrindはsolaris/sparcに移植されていません;p
fxcop - 静的コール グラフ分析はどのような問題を解読しますか?
プログラムで静的呼び出しグラフ分析を使用して、どのような問題を見つけたいと考えていますか? FxCop は静的コール グラフ分析を使用しますが、この手法を使用してどのような問題を検出しますか?
http://msdn.microsoft.com/library/bb429476.aspx
http://en.wikipedia.org/wiki/Callgraph
知識不足で申し訳ありませんが、グーグルでいくつかの情報を見つけましたが、それが非常に不完全であることを恐れています. ありがとう!
android - Android でコール グラフを生成する
EclipseでAndroidアプリケーションのコールグラフを生成するツールは何ですか? どのメソッドが相互に作用するのか知りたいのですが...しかし、役立つものが見つからないようです。私は Oprofile について何か読んだことがありますが、多くの人がそれが機能しておらず、多くの問題を含んでいると言っています。より良いアプリケーションを開発するために、自分のコードを Android で視覚化したいと考えています。
ありがとうございました
c# - メソッドが new ステートメントを含む別のアセンブリ内のメソッドを呼び出すかどうか、およびその逆かどうかを判断する
特定の属性でマークされたメソッドによって呼び出されたメソッド内でオブジェクトの割り当てが行われた場合に失敗するルールを作成したいと考えています。
CallGraph.CallersFor()
メソッドを呼び出すすべてのメソッドを反復して を使用してチェックし、これらの親メソッドのいずれかに属性があるかどうかを確認することで、これまでのところ機能しています。
これは、チェック対象のメソッドと同じアセンブリ内の親メソッドをチェックするために機能しますが、オンラインで読むと、一度CallGraph.CallersFor()
はすべてのアセンブリを調べたように見えますが、現在はそうではありません。
質問:別のアセンブリ内のメソッドを含め、特定のメソッドを呼び出すメソッドのリストを取得する方法はありますか?
代替回答:上記が不可能な場合、別のアセンブリ内のメソッドを含め、特定のメソッドによって呼び出されるすべてのメソッドをループするにはどうすればよいですか。
例:
ルールがどこでエラーを報告するかはあまり気にしません。この段階では、エラーを取得するだけで十分です。
valgrind - Callgrind を使用してマルチプロセス アプリケーションの単純なコールグラフを生成する方法は?
Valgrind Callgrind に問題があります。
アプリケーションのコール グラフを生成する必要がありますが、このアプリケーションは複数のプロセスを起動します。Valgrind の --trace-children=yes オプションを使用しましたが、いくつかの異なる callgrind 出力ファイルが生成されます。
これらのファイルを組み合わせて、呼び出しグラフを 1 つだけにする方法はありますか? 複数のファイルを結合するツールさえあれば完璧ですが、何も見つかりませんでした。
ありがとうございました
dependencies - 分析のポイント - 定義
Soot フレームワークを使用して構築するコールグラフを使用して、いくつかの依存関係分析を実行しようとしています。「ポイントツー」分析を使用するとコールグラフの精度が向上するというガイドを読みました。「ポイント先」分析とは正確には何ですか?また、コールグラフの精度をどのように向上させることができますか?