Electronをトレースする
CSV輸出。

ページAPIからElectron IPCを介して、CSVファイルライターにボタンをクリックします。

"エクスポートノート"はどこに行くのですか?

このガイドでは、小さなElectronアプリを使用しています。 クリック ノートのエクスポート ページ内のAPIを呼び出し、メインプロセスに交差し、CSVを書き込みます。 動作は複数のファイルに分散されます。

CSVは、Electronプロセス間でエクスポートします

  1. レンダラー→プリロードnotes.exportCsv()renderer.js によって公開されるAPIを呼び出します preload.js.
  2. プロセス間notes:exportプリロードはIPCチャネルを起動します。これは、メインプロセスへの名前付きメッセージです。
  3. 主なプロセスエクスポートハンドラーmain.js そのチャネルを処理し、CSVライタを呼び出します。

csv.js メモの書式設定→ main.js 書き込み downloads/notes.csv.

REAは、そのハンドラーへのリテラルIPC呼び出しと一致し、公開されたAPIを識別します。 パスはコードから推測され、ランタイムキャプチャは何が実行されるかを確認できます。

CSV輸出について尋ねる

エージェントをREAに接続します そして、それにappディレクトリまたはASARファイルを与えます:

あなたのコーディングエージェント

私はこのアプリでノートをエクスポートするときに何が起こるかを見つけるためにREAを使用し CSVはどこで作成されますか?

プロンプトの例。 アプリケーションフォルダへの絶対パスを含めるか、 app.asar.

REAはアプリケーションファイルを読み取り、エントリポイント、モジュール、およびプロセス境界のマップを構築します。 エージェントはそのマップを使用して、調査をエクスポート機能に絞り込みます。

エクスポートコードのトレース

ページは小さなAPIを呼び出します

renderer.js ·ソースの例
document.querySelector("#export").addEventListener("click", async () => {
  const destination = await window.notes.exportCsv();
  document.querySelector("#status").textContent = `Saved to ${destination}`;
});

ページはメソッド名を知っています。 実装はプリロード内に存在し、レンダラーに公開されます。

preload.js ·ソースの例
contextBridge.exposeInMainWorld("notes", {
  exportCsv: () => ipcRenderer.invoke("notes:export"),
});

REAレコード notes.exportCsv とリテラルチャンネル notes:export. その呼び出しをメインプロセスの単一の一致ハンドラーとペアにします。

main.js ·ソースの例
ipcMain.handle("notes:export", () => {
  const destination = path.join(app.getPath("downloads"), "notes.csv");
  writeFileSync(destination, toCsv(notes), "utf8");
  return destination;
});

ハンドラーを読むことは元の質問に答えます: csv.js メモをフォーマットし、メインプロセスは書き込みます notes.csv ユーザーのダウンロードフォルダに移動します。

REA結果·概要。ipc抜粋
{
  "literal_channels": 1,
  "renderer_transmissions": 1,
  "main_handlers": 1,
  "paired_renderer_transmissions": 1,
  "ambiguous_renderer_transmissions": 0
}

以下のダウンロード可能な例でREA4.1.0によって記録されました。 ソースの場所は、API、チャネル、およびハンドラーの調査結果に伴います。

自分で例を分析してください

例をダウンロードして解凍します。 アーカイブには完全なものが含まれています notes-example フォルダ。 それを分析する Node.js と npm; Electron この例では必要ありません。

ダウンロード例ZIP

6つのソースファイルを参照します。
静的アプリケーション分析
npx -y rea-agents@latest analyze-javascript-application \
  /absolute/path/to/notes-example --json

パスを解凍したフォルダに置き換えます。 あなたは1つのIPCチャネルと1つの一致するハンドラを見つける必要があります normalized_result.summary.ipc. ソースの場所は次のとおりです normalized_result.graph.

独自のアプリの場合は、そのディレクトリまたはASARパスで同じコマンドを使用します。 エージェントは、REAの機能トレースツールを使用して、リテラル文字列、API名、またはIPCチャネルを追跡できます。

CSVライターを検査する

フォロー notes:export そのハンドラに。 どの入力がCSVライターに到達し、ファイルの書き込みに失敗した場合はどうなりますか?

これらの詳細を検査するには、ソースの場所を使用します。 計算されたチャネル名とあいまいなハンドラーは未解決のままである可能性があります。

トップ