-
Notifications
You must be signed in to change notification settings - Fork 166
定義された用語の意図しない使用方法を検出するスクリプトを追加 #1348
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
29cc17d
to
7d60258
Compare
7d60258
to
1feb8ee
Compare
「効果は未定義」を「動作は未定義」に修正しました |
「- 結果として未定義アドレスになる場合があるが、それ以外の未定義動作はない」 仕様ではundefinedが使われていました。
これは「未定義アドレス」とするしかないように思いますので、やはり用語定義 (GLOBAL_DEFINED_WORDS.json) から「未定義」を外し、許可された使用方法に「未定義アドレス」を加えることになりそうです。 |
👍 一票。普通の英語として和訳したらそうなるかもですが。未規定にも "挙動は未規定" が1箇所ありますね (検索 未規定 挙動)。
@tshino さんの #1347 (comment) のブロック内コメントにもありましたが、この文脈だと、「未定義アドレス」は未定義の動作として挙げられているように読めるので、そういう意味では寧ろ `GLOBAL_DEFINED_WORDS.json "未定義" の部分が未定義の動作としてマークされた方が良いかもという気がします (理想は "アドレスは未定義動作になる" など言いかえることですが、アドレスが即動作になるわけではないので表現に困りますね…)。 問題は、未定義の動作と全く関係ない文脈で "未定義" と訳すしかないケースが存在するかどうかということの気がします。でも規格には undefined 〇〇 はたくさん出てきて、恐らく全て未定義の動作を imply しているのではないかという気がします (チェックはしてないですが)。 |
配列の要素へのポインタで、ポインタ加算の結果として配列の範囲外にでたら未定義動作になるのですかね (間接参照しなくても)。 |
Edit: すみません。未定義アドレスは未定義の動作じゃないよというご指摘かと思ったのですが早とちり(?)でした(?)。リンク先を読んだら範囲外になったら(終端点はセーフ)(間接参照しなくても) UB って書いてますね。間接参照しなければセーフだとなんとなく思ってました (アドレスのオーバーフローやアドレス空間が単純じゃない場合など考えたらそれはそうなのかも?)。 |
実行の結果として値が未定義アドレスになる場合、それは未定義の動作に当たる、という暗黙のルールがあるのであれば、読者としてはどこかにその情報が書いてあって欲しいですね。 「未定義アドレス」を未定義の動作にエイリアスしてしまうのも手かも知れません。 |
「未定義アドレス」に対応する "undefined address" については明確な意味付けが行われていない |
一通り直してみました。確認お願いします。 |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
一通り見ました。挙げた点はいずれも修正が必要となる想定なので "Request changes" にしてみます。
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
"動作は未定義" を辞書 (GLOBAL_DEFINED_WORDS
) に登録している一方で、"動作は未定義" → "未定義動作となる" という書き換えも幾つかあります。辞書に登録するなら "動作は未定義" はそのままで良いのではないでしょうか。
Co-authored-by: Koichi Murase <myoga.murase@gmail.com>
修正が入る箇所について、より用語らしく見える方を優先するよう寄せましたが、言い換えなのでどちらも許容ということでよいかと思います。 |
「未定義動作となる」をすべて「未定義動作を引き起こす」に修正しました |
「~するプログラムは未定義動作となる。」→「~するプログラムは未定義動作を引き起こす」の提案は、この書き方だと "プログラム = 未定義動作" のように読めて変だったからでした。他の「未定義動作となる」については大丈夫だと思っていたのですが、まあ一貫させるという意味では全部「未定義動作を引き起こす」の方がわかりやすいのかもしれませんね。 |
Co-authored-by: Kazutoshi SATODA <k_satoda@f2.dion.ne.jp>
@k-satoda また、「未定義アドレスが未定義動作ではないと考えられる」という文章を追加してあります。 |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
ありがとうございます。
前回レビュー指摘箇所がそれぞれ問題無くなっていることを確認できたので Approve します。
「未定義」の意図しない使用方法を検出してみました。
許可された使用法として以下を設定して見ましたが、「挙動は未定義」と「振る舞いは未定義」は「動作は未定義」に統合してしまっていいかもしれません。
仕様を調べながら、個別の問題をどう直すか相談していく必要がありそうです。
このスクリプトでの意図しない「未定義」の使用が0になったらマージします。