最近、私は、そうでなければ長くて退屈なタスクのためにJavaコードを生成するのに役立ついくつかのツールを書きました。私はfreemarkerを使用してテンプレートを作成します。ただし、テンプレート内のすべての空白は出力に保持されるため、コードが非常に乱雑になります。テンプレートからインデントを削除してこれを修正することはできますが、それではテンプレートがかなり保守しにくくなります。
この簡単なサンプルテンプレートを考えてみましょう。
public class MyTestClass
{
<#list properties as p>
private String ${p.name};
</#list>
}
私のテンプレートはうまくフォーマットされていますが、私のコードは次のようになります。
public class MyTestClass
{
private String prop1;
private String prop2;
private String prop3;
}
インデントが少し多すぎるので、次のようにする必要があります。
public class MyTestClass
{
private String prop1;
private String prop2;
private String prop3;
}
これを実現するには、次のようにテンプレートからインデントを削除する必要があります。
public class MyTestClass
{
<#list properties as p>
private String ${p.name};
</#list>
}
この単純なケースでは、テンプレートからインデントを削除することは実際には問題ではありませんが、複雑なテンプレートがまったく読めなくなることを想像できます。
一方では、コードを適切にフォーマットする必要がありますが、他方では、テンプレートも適切にフォーマットする必要があります。私はEclipseをIDEとして使用しており、私の(そして私のチームの)希望に合わせて完全にカスタマイズされた組み込みのフォーマッターを備えています。どういうわけかフリーマーカーテンプレートからコードを生成し、後処理ステップとしてその出力をEclipseのフォーマッターでフォーマットできれば素晴らしいと思います。
もちろん、コードを生成した後、フォーマッターを手動で実行することもできますが、このプロセスを自動化したいのです。
つまり、簡単に言えば、自分のJavaコード内でEclipseのコードフォーマッターを使用する方法を知っている人はいますか?