职业网络成瘾者 • 游戏爱好者 • 技术创造者
职业网络成瘾者 • 游戏爱好者 • 技术创造者

将 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年6月29日。最后更新于2010年6月29日。

    📺 快来看看 Squeaky 的最新视频!

    如何为您的直播添加简单的实时字幕