<html><head><meta name="color-scheme" content="light dark"></head><body><pre style="word-wrap: break-word; white-space: pre-wrap;">% DailybuildLib.tex
%	Last update: 2017/03/13 F.Kanehori
%\newpage
\subsubsection{dailybuild_lib.pm}
\label{subsubsec:DailybuildLib}

Daily Buildの結果解析で共通に使用する関数のライブラリ
%(\DDAGGER を付したものは外部非公開である)。

\medskip
\bf{説明}：
\begin{narrow}[\WID]
	\tt{read_log()}\\
	\tt{outside_threads_before()}\\
	\tt{outsize_threads_after()}
	\begin{narrow}
		指定されたログファイルを読み込み、モジュール毎にスレッド順に整理する。
		\begin{enumerate}
		  \item	関数値は次の三つ組。
			\begin{description}
			  \item[\hbox to 4.5em{\%modules}]
				モジュール名とスレッド情報を関連付けた連想配列。
				キーはモジュール名、値は\tt{\%threads}の参照。
				ここで\tt{\%threads}はスレッド情報を格納する連想配列で、
				キーはスレッド番号、値はそのスレッドに属するログ行。
			  \item[\hbox to 4.5em{@modules}]
				モジュール名を出現順に格納した配列。
			  \item[\hbox to 4.5em{@lines}]
				ログの各行を出現順に格納した配列
			\end{description}
		  \item	モジュールの開始パターンは3種類あり、どれを使うかは引数で指定する。
			\begin{tabular}{ll}
			    パターン1 &amp; \FILE{Build.log}及び\FILE{Run.log}用 \\
			    パターン2 &amp; \FILE{StubBuild.log}用 \\
			    パターン3 &amp; \FILE{filter.pl}用\\
			\end{tabular}
		  \item	スレッド関連より前に出力されたログ行は、
			スレッド番号\tt{\,-1}のスレッドに属するものとして扱う。
		  \item	スレッド関連より後に出力されたログ行は、
			スレッド番号\tt{999}のスレッドに属するものとして扱う。
		\end{enumerate}
	\end{narrow}

	\tt{associate_modules()}\\
	\tt{mod_ins()}\\
	\tt{mod_del()}
	\begin{narrow}
		引数で指定された2つのモジュール配列
		(\tt{@module1}, \tt{@module2}とする)の対応する要素が
		同じモジュールとなるように各配列の要素を調整する。
		\begin{enumerate}
		  \item	\tt{@module1}にしかないモジュールに対しては、
			\tt{@module2}に`\tt{_DEL_}'マークを挿入することで対応をとる。
		  \item	\tt{@module2}にしかないモジュールに対しては、
			\tt{@module1}に`\tt{_INS_}'マークを挿入することで対応をとる。
		  \item	\tt{mod_ins()}と\tt{mod_del()}は、
			`\tt{_INS_}'マーク及び`\tt{_DEL_}'マークを返す。
		\end{enumerate}
	\end{narrow}

	\tt{gather_lines()}
	\begin{narrow}
		モジュール名とスレッド情報を関連付けた連想配列から、
		指定されたスレッドのログのみを抽出する。
		\tt{rad_log()}で返された\tt{\%modules}を処理の対象とする。
	\end{narrow}
\end{narrow}

% end: DailybuildLib.tex
</pre></body></html>