最近clang-format
を知った。
しかし現状触っているコードはC言語なのだが、組み込みSQLがあるコードなので、clang-formatでフォーマットするとSQL部分がぐちゃぐちゃになってしまっていた。
問題
例えばフォーマット後、下記のようになってしまう
EXEC SQL
SELECT TEST INTO : h_VALUE
FROM TABLE_A
WHERE A = : lh_A
AND B = : lh_B
AND C = : lh_C
AND D = : lh_D
AND E = : lh_E
AND F = : lh_F
AND G = : lh_G
AND H = : lh_H
FOR
UPDATE;
:(コロン)の後にスペースが挿入されてしまう。これだと現状ビルドエラーがでてしまい、フォーマット後手動で直すなんて意味がわからない状態になってしまった。
解決策
// clang-format off
EXEC SQL
SELECT TEST INTO :h_VALUE
FROM TABLE_A
WHERE A = :lh_A
AND B = :lh_B
AND C = :lh_C
AND D = :lh_D
AND E = :lh_E
AND F = :lh_F
AND G = :lh_G
AND H = :lh_H
FOR
UPDATE;
// clang-format on
上記のように、整形して欲しくない部分をコメントで囲めば、確かにフォーマットはされないようになった。
Stack Overflowには、1行ずつ、行の最後に //
を書けば無視される、との意見もあったが自身の環境では動かなかった。