kmyk-jikka / Jikka

an automated solver for problems of competitive programming
https://kmyk-jikka.github.io/Jikka/playground
Apache License 2.0
152 stars 11 forks source link

Fix scripts/pre-commit #171

Closed uta8a closed 2 years ago

uta8a commented 2 years ago

問題: pre-commitを設定して、clang-formatをかけるときに、for文の結果を渡しているため、

a.cpp # ok
b.cpp # ng
c.cpp # ok

のように最後がokで途中がngの順で検査すると、最後のokでExit code 0を受け取って HINT... 以降が働かなくなるのでcommitされてしまいます。

改善策: フォーマットすべきファイルが出たらそこで止めるようにしました。(ヒントを実行すれば一括でフォーマットされるのですべての警告を表示せず打ち切ってよさそうです。)

kmyk commented 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 の中の挙動が変わるのはだめでしょ