如何在pre-commit中使用默认Checkstyle配置并修改行长度为100?
背景
当我运行以下pre-commit配置时:
- repo: https://github.com/gherynos/pre-commit-java rev: v0.2.9 # Use the ref you want to point at hooks: - id: pmd # args: ["--cache"] # exclude: /test/ - id: cpd # exclude: /test/ - id: checkstyle # Set the path to your Checkstyle configuration file # args: ["-c", "checkstyle.xml"] # exclude: /test/
checkstyle抛出了32条各类警告,包括InvalidJavadocPosition,这符合预期。但默认情况下它的行长度限制为80字符,而google_style_java使用的是100字符。我尝试通过添加checkstyle.xml文件来修改行长度为100,文件内容如下:
<?xml version="1.0"?> <!DOCTYPE module PUBLIC "-//Checkstyle//DTD Checkstyle Configuration 1.3//EN" "https://checkstyle.org/dtds/configuration_1_3.dtd"> <module name="Checker"> <!-- Configure the line length check with a maximum limit of 80 characters --> <module name="LineLength"> <property name="max" value="80"/> </module> </module>
并启用了args: ["-c", "checkstyle.xml"]。
问题
然而,该配置导致checkstyle仅检查行长度。我可以创建包含所有Checkstyle检查项的自定义配置,但这工作量大,且Checkstyle更新时需手动维护配置。因此我希望沿用pre-commit使用的默认Checkstyle配置,仅将行长度从80改为100。
问询
请问如何在保留pre-commit默认Checkstyle配置的前提下,将行长度限制修改为100?
解决方法
要在保留pre-commit默认Checkstyle配置的基础上修改行长度,可通过继承默认配置并覆盖指定规则实现,具体步骤如下:
- 修改你的
checkstyle.xml,通过extends属性继承pre-commit-java默认使用的Google风格配置,仅覆盖行长度规则:
<?xml version="1.0"?> <!DOCTYPE module PUBLIC "-//Checkstyle//DTD Checkstyle Configuration 1.3//EN" "https://checkstyle.org/dtds/configuration_1_3.dtd"> <!-- 继承Google风格的默认配置 --> <module name="Checker" extends="google_checks"> <!-- 覆盖行长度检查的最大限制为100 --> <module name="LineLength"> <property name="max" value="100"/> </module> </module>
- 确保pre-commit配置中checkstyle的参数指向修改后的配置文件:
- repo: https://github.com/gherynos/pre-commit-java rev: v0.2.9 hooks: - id: checkstyle args: ["-c", "checkstyle.xml"] # 保留其他原有注释或配置
这样配置后,Checkstyle会沿用Google风格的所有默认检查规则,同时仅将行长度限制改为100,无需手动维护全部规则,后续Checkstyle更新时也能自动同步默认配置的变化。
内容的提问来源于stack exchange,提问作者a.t.
相关产品推荐
相关产品推荐

