checkToolsの拡張

checkToolsは各チェックカテゴリがモジュール形式になっているため、拡張で独自のチェック機構を追加することができます。

AbstractCheckerとAbstractCategoryOption

checkToolsのカテゴリモジュールは大別すると2つの機構で構成さています。

1つは実際にシーン中のノードのチェックを行う

AbstractCheckerクラス

によるチェック機構。

もう1つはAbstractCheckerを用いてチェックを行い、その結果を表示するためのGUI機能を構成する

AbstractCategoryOptionクラス

になります。

AbstractChecker

このクラスはシーン中の特定のオブジェクトをチェックし、その結果をGUIへ渡すための機構を備えた基底クラスです。

AbstractCheckerにはさらにサブクラスとして以下のものがあります。

仕組み

checkToolsのカテゴリモジュールではAbstractCategoryOptionで定義した設定に基づいて、AbstractCheckerのcheckメソッドを呼び出し、その結果エラーや警告があった場合は、AbstractCategoryOptionに紐づけられている結果表示ビューワにその結果内容を表示します。

blockdiag AbstractCategoryOptio n AbstractChec ker ResuleViewer execCheck define buildUI

このクラスのいくつか重要なメソッドを紹介します。

メソッド

メソッド名

引数

戻り値

説明

setCategory

category : str

チェッカーの種類を設定します。

チェッカーの目的を表す任意の名前を設定して下さい。

check

list

対象となるノードに対してチェックを行うための具体的な手続きを記述します。

チェックの結果エラーや警告などがある場合、エラー内容とエラーレベルを格納する特殊オブジェクト

CheckedResult

にその内容を格納し、リスト化して返します。

checkメソッド

checkToolsのカテゴリモジュールを新たに開発する場合、基本的にはこのメソッドを上書きし、チェック結果に応じた戻り値を返します。

ただし

AbstractChecker

内で紹介したサブクラスを用いる場合は、checkメソッド自体はそれぞれのサブクラスが専用の機構がすでに記述されているため、別のメソッドを上書きして運用することになります。

それぞれのサブクラスでどのメソッドを上書きするかは各種リンクからご確認下さい。

REBasedNameChecker

名前ベースのチェッカーの基底クラスです。メンバー変数NamePatternに適合するかどうかで判断を行います。NamePatternには任意のコンパイル済み正規表現オブジェクトを格納する必要があります。

AbstractDagChecker

dagを対象とするチェッカーの基底クラスです。設定されたターゲットに対して、一番下の階層まで再帰的にチェックを行います。

REBasedDagNameChecker

名前ベースのdagを対象とするチェッカーの基底クラスでAbstractDagCheckerのサブクラスです。メンバー変数NamePatternに適合するかどうかで判断を行います。NamePatternには任意のコンパイル済み正規表現オブジェクトを格納します。また、名前がシーン中に重複しているかどうかもチェックします。

GroupMemberChecker

階層ベースで一番下階層までチェックを行います。setTargetで指定したグループの下階層のオブジェクトが対象となります。(setTargetしたオブジェクトは走査対象にはならない点に注意して下さい。)

DataBasedHierarchyChecker

データ(dict型など)に基づいてチェックを行う機能を提供するクラスです。

AbstractCategoryOption

CheckedResult