[openrtm-staff:1037] Re: サービスポートを持つRTCのコード生成時に出るエラー対応について

Ando Noriaki n-ando @ aist.go.jp
2017年 10月 15日 (日) 14:40:35 JST


坂本様

安藤です

> > 2.include IDLファイルがない場合 → ダイアログにて
> > Warning: Included IDL $filename not found. Generated code might
> > be incomplete.
> > のように注意を促すだけにして、そのままコード生成を試みる。
> >
> > とすることは可能でしょうか?
> こちらのお話につきまして,1点ご確認させてください.
> IDLで定義しているインターフェース間に継承関係があり,
> 親クラスをインクルード先のヘッダファイルで定義していた場合は,
> どうすれば良いのでしょうか?

ですので、警告ダイアログに  Generated code might be incomplete.
と表示して、ユーザ側に注意を促すようにしております。

今回の場合の問題は、#ifdef 内の #include ディレクティブは、
RTCBuilderのコード生成時には define の有無の判断がつきませんので、
もともと include する必要のないものがある場合があり、ファイルが
ない場合の処理中断を回避する方法を実装したい、ということになります。


> 親クラス側で定義されているメソッドが定義されていない形のコードが生成されました.
> こちらは問題ございませんでしょうか?

これは本来実装コード生成時に、親インターフェースのオペレーションが
定義されているかのチェックによってエラーを発すべき問題のように思います。

include ディレクティブにも一応関連する問題でもあるので、上で書きましたように、
警告をダイアログで表示して、実装定義が不完全であるかもしれない旨
ユーザに注意を促します。

結局のところ、#incldueディレクティブに関して問題があるかどうかは、
上記の理由によりユーザしか判断できないと思いますので。。。


> > ダイアログがモーダルだと、モードレスにする必要があるので 少し面倒かもしれませんが
> > いかがでしょうか?
> 上記の警告ダイアログは,「コード生成」をクリックした後に表示される,と思ったのですが,
> こちらで間違っておりませんでしょうか?
> もしも,間違いないようでしたら,通常の警告ダイアログとなりますので,
> 特に問題はないと思います.
> また,表示するダイアログについてなのですが,警告を表示するだけでよろしいでしょうか?
> 例えば,そのまま処理を継続するかどうかをユーザに選択して頂き,
> 継続が選択された場合のみ,コード生成を実行する,という事もできると思いましたため,
> ご確認させて頂きました.

継続をユーザに判断させるほうがいいですね。
そのようにお願いいたします。


> > ちなみに、コード生成時にTypedef等の宣言の完全性チェックを行って、そちらでも
> > エラーダイアログなどが出るようになっていましたでしょうか?
> 申し訳ございません.こちらは勘違いしておりました.
> 以前は,typedef double DoubleList; のような定義があった場合で,
> DoubleListを引数の型として使用していた場合,DoubleListをdoubleに変換する処理を
> 行っていたのですが,現状のコードで確認させて頂きました所,
> DoubleListの名称のままで出力されておりました.
> このため,typedefされた型のチェックは行っておりません.

説明不足で申し訳ありません。typedefは例でして、include したIDLに関連して
コード生成の振る舞いが変わる部分に対して、どのような影響があるかを
お聞きしたかった次第です。

上のお答えにありますように、親子関係のあるインターフェース定義に関して
子インターフェース実装定義を出力する際に、親定義の有無によりエラーを
出すか、出さないかについて現状の実装を知りたかったのです。
#ここでエラーが出れば、include ディレクティブでは、すべてにおいて
#warning で十分な気もしますので。。。でも、現状はそうではないと、、、


ということで、以下のように修正をお願いできますでしょうか?

1.すべての#include ディレクティブに対して、
include IDL ファイルがない場合、ダイアログにて
Warning: Included IDL $filename not found. Generated code might
be incomplete. Continue? Yes/No
のように注意を促して、コード生成の継続の判断をユーザに問い合わせる。
Yes:処理継続(不完全なコードになる可能性がある、が、警告済み)
No:処理中断(ユーザは、IDLを見直す)

2.可能ならば、インターフェース実装生成時に、親インターフェース定義が
未定義の場合、No parent interface definition found. Please check the IDL
and included IDL files. のように警告を出す。

以上、お手数をおかけしますが、よろしくお願いいたします。



>
> よろしくお願いいたします.
>
> > 安藤です
> >
> > お世話になっております。
> > 河内さんからお問い合わせしております件ですが、
> > include されている何らかのIDLファイルに対するチェックを
> > 少し緩めるよう修正をお願いいたしたく存じます。
> >
> > 1.include IDLファイルがある場合 → 今まで通り
> > 2.include IDLファイルがない場合 → ダイアログにて
> > Warning: Included IDL $filename not found. Generated code might
> > be incomplete.
> > のように注意を促すだけにして、そのままコード生成を試みる。
> >
> > とすることは可能でしょうか?
> >
> > ダイアログがモーダルだと、モードレスにする必要があるので 少し面倒かもしれませんが
> > いかがでしょうか?
> >
> > ちなみに、コード生成時にTypedef等の宣言の完全性チェックを行って、そちらでも
> > エラーダイアログなどが出るようになっていましたでしょうか?
> >
> > ご面倒をおかけして申し訳ございませんが、よろしくお願いいたします。
> >
>
> -----------
> 株式会社 グローバルアシスト
> 坂本 武志
> sakamoto @ globalassist.co.jp
-------------- next part --------------
HTMLの添付ファイルを保管しました...
URL: <http://www.openrtm.org/pipermail/openrtm-staff/attachments/20171015/5a873f1a/attachment.html>


More information about the openrtm-staff mailing list