explain_program5 プログラム仕様

プログラムコードをAIでドキュメント化するツール。

指定されたワイルドカードパターンに一致するソースコードファイルを読み込み、 設定ファイルに基づいたプロンプトを使用してAI(OpenAIまたはGoogle Gemini)に ドキュメントを生成させ、指定された出力ファイルに書き出します。

explain_program5.py 技術ドキュメント

ai.explain_program5.get_program_type(path)[ソース]

プログラムファイルのパスからプログラムのタイプ(main または lib)を判定します。

ファイル拡張子が`.pm`の場合、またはファイル名が`tk`で始まる場合、ライブラリ(lib)と判定します。 それ以外の場合はメインプログラム(main)と判定します。

パラメータ:

path -- str, プログラムファイルのパス。

戻り値:

str, プログラムのタイプ ('main' または 'lib')。

ai.explain_program5.initialize()[ソース]

コマンドライン引数パーサーを初期化し、設定します。

argparse.ArgumentParser を設定し、必要な引数とオプションを定義します。 pattern (必須, ワイルドカード), output (任意), --inifile, --api, -t (--program_type), -u (--update), -w (--overwrite) オプションが含まれます。 デフォルトのINIファイルパスはスクリプト名から自動生成されます。

戻り値:

argparse.ArgumentParser, 初期化されたコマンドライン引数パーサーオブジェクト。

ai.explain_program5.main()[ソース]

プログラムの主要な処理を実行します。

initialize 関数で初期化された引数を解析し、AI設定ファイル (ai.env) と プロンプトINIファイルを読み込みます。 指定されたパターンに一致するファイルを検索し、一つずつ処理します。 出力ファイルが既に存在し、更新フラグや上書きフラグが設定されていない場合はスキップします。 ソースコードを読み込み、言語タイプとプログラムタイプを判定し、 INIファイルの設定に基づいてプロンプトを構築します。 AIサービス(OpenAIまたはGoogle Gemini)に問い合わせてドキュメントを生成し、 生成されたドキュメントを出力ファイルに書き込みます。 各ファイル処理後に1秒間待機し、最後にユーザーからの終了入力を待ちます。

戻り値:

None

ai.explain_program5.read_ini(inifile=None)[ソース]

指定されたINIファイルから設定を読み込み、変数を展開します。

key=value形式の行を解析し、3重引用符で囲まれた複数行の値をサポートします。 また、$VARIABLE_NAME 形式の変数を、既に読み込まれた設定値で展開します。 コメント行(# または ; で始まる)と空行は無視されます。

パラメータ:

inifile -- str または None, 読み込むINIファイルのパス。Noneの場合はsearch_fileで探索される。

戻り値:

dict, 読み込まれた設定をキーと値のペアで格納した辞書。

例外:

FileNotFoundError -- INIファイルが見つからない場合。

ai.explain_program5.search_file(infile=None)[ソース]

指定されたファイルパスまたはデフォルトのINIファイルを探索します。

infileが指定されない場合、スクリプトの実行ディレクトリとカレントディレクトリから デフォルトのINIファイル(スクリプト名.ini)を探します。 infileが指定された場合、そのパスが存在するか、またはスクリプトの実行ディレクトリからの 相対パスで存在するかを確認します。

パラメータ:

infile -- str, 探索するファイルパス。デフォルトはNoneで、その場合はデフォルトINIファイル名を使用。

戻り値:

str または None, 見つかったファイルの絶対パス。見つからない場合はNone。