プロのインターネット中毒者 • ゲーム愛好家 • 技術クリエイター
プロのインターネット中毒者 • ゲーム愛好家 • 技術クリエイター

Checkstyle を自動 JUnit テストとして実行する

Checkstyle を自動 JUnit テストとして実行する方法。
このページは、皆様の便宜を図るため、熱意あふれるAIインターン生が英語から翻訳しました。彼らはまだ学習中なので、多少の誤りがあるかもしれません。正確な情報については、英語版をご覧ください。
ブログ Checkstyle を自動 JUnit テストとして実行する

このブログ記事は2010年6月に公開されたため、お読みいただいた時期によっては情報が古くなっている可能性があります。情報の正確性を保つため、これらの記事を常に最新の状態に保つことはできませんのでご了承ください。

    If you are looking for a great code analysis tool to help you review your Java code, Checkstyle is a good choice. It basically checks your code towards a set of given checks of your choice, everything from checking that the code is following naming conventions, to spotting duplicated code.
    There are several ways to use Checkstyle, either by using it with a build automation tool such as Apache Maven or as an Ant task, but you can also simply execute it through a command line.
    However if you are interested you can also wrap it into a JUnit test. Even though it is really not a unit test, it could be really convenient as it allows you run it along with the rest of your tests.
    Here is a basic example code:
    public class CheckStyleTest extends TestCase { @Test public void testCheckStyle() throws Exception { /* * Files */ File ROOT = new File("src/"); System.out.println("Root is set to "" + ROOT.getAbsolutePath() + ""."); List files = new ArrayList(); listFiles(files, ROOT, "java"); System.out.println("Found " + files.size() + " Java source files."); /* * Listener */ ByteArrayOutputStream sos = new ByteArrayOutputStream(); AuditListener listener = new DefaultLogger(sos, false); /* * Configuration */ InputSource inputSource = new InputSource(CheckStyleTest.class.getResourceAsStream("configuration.xml")); Configuration configuration = ConfigurationLoader.loadConfiguration(inputSource, new PropertiesExpander(System.getProperties()), false); /* * Create checker */ Checker checker = new Checker(); checker.setModuleClassLoader(Checker.class.getClassLoader()); checker.configure(configuration); checker.addListener(listener); /* * Process */ int errors = checker.process(files); System.out.println("Found " + errors + " check style errors."); System.out.println(sos.toString()); assertTrue(errors + " check style errors found. " + sos.toString(), errors == 0); /* * Clean up */ checker.destroy(); } private static void listFiles(List files, File folder, String extension) { if (folder.canRead()) { if (folder.isDirectory()) { for (File f : folder.listFiles()) { listFiles(files, f, extension); } } else if (folder.toString().endsWith("." + extension)) { files.add(folder); } } } }
    As you can notice the test will try and read from a file called "configuration.xml". File this has to be in the same folder as where you put this test. "configuration.xml" is simply the checks that Checkstyle should perform. How to write this document is described on the their configuration page.
    A sample of the "configuration.xml" file would be:
    <module name="Checker"> <module name="TreeWalker"> <module name="CovariantEquals"/> <module name="EmptyStatement"/> <module name="FallThrough"/> <module name="SuperClone"/> <module name="AvoidStarImport"/> <module name="UnusedImports"/> <module name="AvoidStaticImport"/> <module name="EqualsHashCode"/> </module> </module>

    Special Agent Squeaky 著。初版 2010-06-29。最終更新 2010-06-29。

    📺 Squeakyの最新動画をチェック!

    ライブ配信にリアルタイム字幕を簡単に追加する方法