今日、最終的にコードのどこかにある次のスニペットに起因するバグを探しました (ここでは、リスト内の "PRIMARY KEY" 制約のみをフィルター処理しようとしていました)。
(filter #(= (% :constraint_type "PRIMARY KEY")) aListOfconstraints)
正しい代わりに:
(filter #(= (% :constraint_type) "PRIMARY KEY") aListOfconstraints)
つまり、バグは、次のように、キーが見つからない場合にデフォルトの引数を取るマップの複合効果でした。
({:a 1 :b 2} :a 0)
...そして、1 つの引数のみを受け入れて true を返す equal 関数:
(= 1) ; evals to true
この種の有効であるが疑わしいコードを表示するように促す代わりに使用できたツールはありますか? それとも、私が気付いていないベストプラクティスでしょうか?