clang-format は、コマンドラインでも使用できるようですので、メモ
https://clang.llvm.org/docs/ClangFormat.html
https://clang.llvm.org/docs/ClangFormatStyleOptions.html
install from source code もできますが...
以下の手順で、src からinstallできますが、makeに数時間や数GB(5GB超?)を要する為、 私が使用する centos8 on virtualboxでは、build できませんでした。
$ wget https://github.com/llvm/llvm-project/archive/llvmorg-10.0.1.tar.gz $ tar -xvf llvmorg-10.0.1.tar.gz $ cd llvm-project-llvmorg-10.0.1 $ mkdir build $ cd build $ cmake -G "Unix Makefiles" ../llvm $ make
install from package
$ sudo yum install clang* $ /usr/bin/clang-format --version clang-format version 9.0.1 (Red Hat 9.0.1-2.module_el8.2.0+309+0c7b6b03)
formatting java source code
以下は、foo.java を indent幅=4 で、上書き(-i)するものです。
clang-format -i -style="{IndentWidth: 4}" ./foo.java
その他、標準入力でsource code を受け取ることもできます。 以下は、「Seasar2徹底入門 - SAStruts/S2JDBC対応 - 翔泳社」のサンプルコードを 整形した例です。
https://www.shoeisha.co.jp/book/detail/9784798121505
$ cat foo.java | clang-format --assume-filename="foo.java" -style="{IndentWidth: 4}"
package org.seasar.sastruts.example.action;
import java.io.ByteArrayOutputStream;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import javax.annotation.Resource;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.seasar.fisshplate.preview.FPPreviewUtil;
import org.seasar.fisshplate.template.FPTemplate;
import org.seasar.sastruts.example.fpao.HelloFpao;
import org.seasar.sastruts.example.fpao.HelloFpao.HelloDto;
import org.seasar.struts.annotation.Execute;
import org.seasar.struts.util.ResponseUtil;
/**
* Fisshplateのサンプルです。
*
* @author Naoki Takezoe
*/
public class ExcelAction {
@Resource protected HelloFpao helloFpao;
/**
* Fisshplateのサンプル一覧を表示します。
*/
@Execute(validator = false)
public String index() {
return "index.jsp";
}
/**
* バインド変数のサンプルです。
*/
@Execute(validator = false)
public String helloWorld() throws Exception {
InputStream in =
getClass().getResourceAsStream("/excel/HelloWorld.xls");
FPTemplate template = new FPTemplate();
Map<String, String> map = new HashMap<String, String>();
map.put("name", "たけぞう");
HSSFWorkbook wb = template.process(in, map);
ByteArrayOutputStream out = new ByteArrayOutputStream();
wb.write(out);
ResponseUtil.download("HelloWorld.xls", out.toByteArray());
return null;
}
:
/**
* プレビュー機能のサンプルです。
*/
@Execute(validator = false)
public String preview() throws Exception {
InputStream template =
getClass().getResourceAsStream("/excel/Foreach.xls");
InputStream data =
getClass().getResourceAsStream("/excel/Foreach_Preview.xls");
HSSFWorkbook wb = FPPreviewUtil.getWorkbook(template, data);
ByteArrayOutputStream out = new ByteArrayOutputStream();
wb.write(out);
ResponseUtil.download("Foreach_Preview.xls", out.toByteArray());
return null;
}
}
$