Closed uta8a closed 2 years ago
メモ:
$ bash -c 'set -ex; for i in 0 1 2; do [ $i -ne 0 ]; done || echo foo; echo bar'
+ for i in 0 1 2
+ '[' 0 -ne 0 ']'
+ for i in 0 1 2
+ '[' 1 -ne 0 ']'
+ for i in 0 1 2
+ '[' 2 -ne 0 ']'
+ echo bar
bar
$ bash -c 'set -ex; for i in 0 1 2; do [ $i -ne 0 ]; done; echo bar'
+ for i in 0 1 2
+ '[' 0 -ne 0 ']'
なんで? 後ろに || echo foo
が付くか付かないかで for
の中の挙動が変わるのはだめでしょ
問題: pre-commitを設定して、clang-formatをかけるときに、for文の結果を渡しているため、
のように最後がokで途中がngの順で検査すると、最後のokでExit code 0を受け取って
HINT...
以降が働かなくなるのでcommitされてしまいます。改善策: フォーマットすべきファイルが出たらそこで止めるようにしました。(ヒントを実行すれば一括でフォーマットされるのですべての警告を表示せず打ち切ってよさそうです。)