AdLint 2.4.0についてご報告です. 警告 W0498 が出て欲しいところで検知されないケースがあります.
static void cast(void); static void cast(void) { const int dw = 1; const int dh = 1; int w = 1; int h = 1; h = dh * w / dw; w = (dw * h / dh); return; }
以上のコードで9行目に下が警告されますが,次の10行目にはされません.10行目もこの警告の対象になると思うのですが.
W0498,二項演算子 + - * / のうち、同じ優先順位の異なる演算子が共に使われています。`()' で結合を明確にすることを勧めます。
Anonymous
You seem to have CSS turned off. Please don't fill out this field.
ご報告ありがとうございます。
たしかに、ご指摘の通り式全体を () でグループ化した場合に警告しなくなるのは不具合でした。
本件の W0498 と、類似した W0488 / W0489 / W0490 / W0495 / W0496 / W0497 / W0499 / W0500 / W0501 / W0502 についても本件の不具合を修正しました。
お手数おかけしますが、AdLint 2.4.10 にアップデートしていただき、再度ご確認をお願いいたします。
余談ですが、「() でグループ化して演算子の結合を明示」コードチェックは、少しお節介なほど警告を出力してしまうかもしれませんが、MISRA-C などのチェックリストを参考に検討した結果、このような仕様になっております。
ご対応ありがとうございます. AdLint 2.4.10 で,期待通りに両方の行が検知されることを確認しました.
この警告を潰していっても,Lisp ほど () まみれになることは稀でしょう.少し多く警告が出ても問題ないかと思います.
余談ついでに,MISRA-C にある int 型や double 型などを使わないというルールについては,AdLint ではどう対応されるのでしょう.代わりに定義域のチェックでカバーされていくのでしょうか.一律に適用してしまうと,お節介な場面の多いルールだと感じますが.
AdLint 2.4.0についてご報告です.
警告 W0498 が出て欲しいところで検知されないケースがあります.
以上のコードで9行目に下が警告されますが,次の10行目にはされません.10行目もこの警告の対象になると思うのですが.
ご報告ありがとうございます。
たしかに、ご指摘の通り式全体を () でグループ化した場合に警告しなくなるのは不具合でした。
本件の W0498 と、類似した W0488 / W0489 / W0490 / W0495 / W0496 / W0497 / W0499 / W0500 / W0501 / W0502 についても本件の不具合を修正しました。
お手数おかけしますが、AdLint 2.4.10 にアップデートしていただき、再度ご確認をお願いいたします。
余談ですが、「() でグループ化して演算子の結合を明示」コードチェックは、少しお節介なほど警告を出力してしまうかもしれませんが、MISRA-C などのチェックリストを参考に検討した結果、このような仕様になっております。
ご対応ありがとうございます.
AdLint 2.4.10 で,期待通りに両方の行が検知されることを確認しました.
この警告を潰していっても,Lisp ほど () まみれになることは稀でしょう.少し多く警告が出ても問題ないかと思います.
余談ついでに,MISRA-C にある int 型や double 型などを使わないというルールについては,AdLint ではどう対応されるのでしょう.代わりに定義域のチェックでカバーされていくのでしょうか.一律に適用してしまうと,お節介な場面の多いルールだと感じますが.