掲示板一覧   -   トピック一覧
   Enterprise Architect 全般
     Cソースコードの読み込みで、クラス要素が生成されない場合がある


フラット表示 前のトピック | 次のトピック
投稿者 トピック
sugimoto
投稿日時: 2010-6-3 13:25
EA Administrator
投稿: 1895

Cソースコードの読み込みで、クラス要素が生成されない場合がある

○ご質問

既存のCソースコードをリバースして、プログラムの構造を視覚化したいと考えています。

【質問1】
Cソースコードで実装ファイル(*.c)がクラスになるものと、
クラスにならないものがありました。
例)
file1.c → file1クラスが生成される
file2.c → file2クラスが生成されない
この違いはどうのような制約から生じるものなのでしょうか?

【質問2】
あるCソースファイルで定義している関数を、別のCソースファイルで使用していた場合、
Cソースファイルから生成されたクラス間の関連は生成されるのでしょうか?
例)
file1.c で関数foo1を定義
file2.c で関数foo1を使用
file1.c → file1クラスが生成される
file2.c → file2クラスが生成される

【質問3】
別パッケージのクラス間の関連は生成されるのでしょうか?


○回答

まず、EAのソースコード読み込み機能では、ソースコードの定義部分のみを解析し、
その結果としてクラス要素が生成されるようになっています。
ソースコードの実動作部(関数の中身)は解析いたしませんので、
この点はご了承ください。

【質問1】
ファイルの拡張子の設定を変更しなければ、C言語の読み込みは通常.hファイルを
解析します。同名前の.cファイルがあれば、そちらの定義部分も解析します。

現在は、.cファイルのみ存在し、.cファイルを読み込んでいるということでしょうか?

もしファイルの中身が空でもクラス要素は生成されますが、
クラス要素が生成されないファイルの中身はどのようになっていますでしょうか?

同名の要素がすでに生成されており、別パッケージ内に移動したなどは
ありませんでしょうか?

ご確認のほど、よろしくお願いいたします。


【質問2】
ソースコード読み込み機能の前提で、関数の中身は解析しません。
このため、関数の中で他のファイルで定義されている関数を呼んでいたとしても、
ソースコード読み込み後、クラス間には関連の関係は生成されません。

【質問3】

関連の関係が生成される条件として、相手のクラスが定義されている場合
(例) Class1 *m_Class1;)がありますが、この相手のクラスが他のパッケージ
に読み込まれている場合でも、定義している方のソースコードを読み込んだ場合は、
関連の関係が生成されます。


○ご質問(続き)

【質問1】
.cファイルに対応するクラスが生成されなかったのは、
以下のようなファイルに対してでした。
file1.h → 存在しない
file1.c → 存在する

拡張子に.hと.cを同時に指定して、読み込みを実施したところ、
同じクラスが2つできてしまうものがありました。

【質問4】
.hファイルがなく.cファイルのみ存在するな場合で、
.cファイルに相当するクラスを生成したい場合は、
.cに対応するダミーの.hファイルを作成すればいいのでしょうか?
例)
file1.h → 存在しない → ダミーのfile1.hを作成
file1.c → 存在する

○回答(続き)

【質問1】
.hファイルと同じ名前の.cファイルが同ディレクトリ上にあれば
.cファイルの定義部分も解析しています。

デフォルトの設定どおり、.hのみ読み込むようになっている場合は、
ご確認いただいたようにクラス要素は生成されません。

EAでは、クラスの定義部分を解析しクラス図を生成しますので、
読み込む対象(拡張子)を指定した場合、どちらも定義がされている
ファイルと認識してしまいます。
このため、ご確認いただきましたように2つ別々のクラス要素が
作成されます。

【質問4】
.cファイルのみ存在する場合と、.c,.hの両方が存在する場合が
混在しているということと思います。

このような場合は、お手数ですが、ご提案いただいたようにダミーの
.hファイルを作成してください。
フラット表示 前のトピック | 次のトピック

題名 投稿者 日時
 » Cソースコードの読み込みで、クラス要素が生成されない場合がある sugimoto 2010-6-3 13:25