// ===================================================================================
// Definition
// ==========
/*df:beginQueryPath*/
public static final String PATH_sqlname1 = "sqlname1";
public static final String PATH_sqlname2 = "sqlname2";
public static final String PATH_sqlname3 = "sqlname3";
/*df:endQueryPath*/
・・・
There is no guarantee that the name strings in the resulting array will appear in any specific order; they are not, in particular, guaranteed to appear in alphabetical order.
問題点
外だしSQLを複数含むプロジェクトを自動生成したとき、Windows環境とMac/Linux環境で一部の自動生成結果に差違が生じます。
具体的には
*Bhv
クラスの以下の箇所でPATH_〜
定数の出力順序が環境によって変わります。コード的には等価なので動作上の問題はないのですが、自動生成されたコードをGitで管理するときに意図しない差分検出され、プルリクレビューのノイズになります。
原因と対処
原因は、ファイルシステム上で外だしSQLのファイルを列挙する際、
File#listFiiles()
で列挙した結果をソートせずにそのまま保持していることでした。[listFiles()のJavaDoc](https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/io/File.html#listFiles())を見ると、
と明確に記述されており、列挙結果の順序が保証されていないことがわかります。
このため、列挙した外だしSQLのリストをソートする実装を追加しました。