[一看就会]Intellij IDEA接入CheckStyle插件,下载自带的Sun和Google风格,修改制作自定义风格示例

一、Intellij IDEA接入CheckStyle插件

    由于IDEA默认不附带CheckStyle,需要先下载:点击右上角齿轮⚙️,再点击plugins,然后进入Marketplace搜索下载“CheckStyle-IDEA”,下载完成后将其启动并Apply即可。

    下载并启用后可以在工具栏看到CheckStyle工具:

    在如图所示的下拉菜单中可选择检查的风格,其中Sun Checks和Google Checks是CheckStyle自带的。其他的是自定义的。

二、下载CheckStyle自带的Google和Sun风格源码,制作并使用自定义风格示例

(一)google_checks.xml、sun_checks.xml源码下载

     CheckStyle自带的Google和Sun两个风格,这里附带了对应的源码(版本更新至2025.4.17):

    ①google_checks.xml:

<?xml version="1.0"?>
<!DOCTYPE module PUBLIC
          "-//Checkstyle//DTD Checkstyle Configuration 1.3//EN"
          "https://checkstyle.org/dtds/configuration_1_3.dtd">

<!--
    Checkstyle configuration that checks the Google coding conventions from Google Java Style
    that can be found at https://google.github.io/styleguide/javaguide.html

    Checkstyle is very configurable. Be sure to read the documentation at
    http://checkstyle.org (or in your downloaded distribution).

    To completely disable a check, just comment it out or delete it from the file.
    To suppress certain violations please review suppression filters.

    Authors: Max Vetrenko, Mauryan Kansara, Ruslan Diachenko, Roman Ivanov.
 -->

<module name="Checker">

  <property name="charset" value="UTF-8"/>

  <property name="severity" value="${org.checkstyle.google.severity}" default="warning"/>

  <property name="fileExtensions" value="java, properties, xml"/>
  <!-- Excludes all 'module-info.java' files              -->
  <!-- See https://checkstyle.org/filefilters/index.html -->
  <module name="BeforeExecutionExclusionFileFilter">
    <property name="fileNamePattern" value="module\-info\.java$"/>
  </module>

  <module name="SuppressWarningsFilter"/>

  <!-- https://checkstyle.org/filters/suppressionfilter.html -->
  <module name="SuppressionFilter">
    <property name="file" value="${org.checkstyle.google.suppressionfilter.config}"
           default="checkstyle-suppressions.xml" />
    <property name="optional" value="true"/>
  </module>

  <!-- https://checkstyle.org/filters/suppresswithnearbytextfilter.html -->
  <module name="SuppressWithNearbyTextFilter">
    <property name="nearbyTextPattern"
              value="CHECKSTYLE.SUPPRESS\: (\w+) for ([+-]\d+) lines"/>
    <property name="checkPattern" value="$1"/>
    <property name="lineRange" value="$2"/>
  </module>

  <!-- Checks for whitespace                               -->
  <!-- See http://checkstyle.org/checks/whitespace/index.html -->
  <module name="FileTabCharacter">
    <property name="eachLine" value="true"/>
  </module>

  <module name="LineLength">
    <property name="fileExtensions" value="java"/>
    <property name="max" value="100"/>
    <property name="ignorePattern"
             value="^package.*|^import.*|href\s*=\s*&quot;[^&quot;]*&quot;|http://|https://|ftp://"/>
  </module>

  <module name="TreeWalker">
    <module name="OuterTypeFilename"/>
    <module name="IllegalTokenText">
      <property name="tokens" value="STRING_LITERAL, CHAR_LITERAL"/>
      <property name="format"
               value="\\u00(09|0(a|A)|0(c|C)|0(d|D)|22|27|5(C|c))|\\(0(10|11|12|14|15|42|47)|134)"/>
      <property name="message"
               value="Consider using special escape sequence instead of octal value or Unicode escaped value."/>
    </module>
    <module name="AvoidEscapedUnicodeCharacters">
      <property name="allowEscapesForControlCharacters" value="true"/>
      <property name="allowByTailComment" value="true"/>
      <property name="allowNonPrintableEscapes" value="true"/>
    </module>
    <module name="AvoidStarImport"/>
    <module name="OneTopLevelClass"/>
    <module name="NoLineWrap">
      <property name="tokens" value="PACKAGE_DEF, IMPORT, STATIC_IMPORT"/>
    </module>
    <module name="NeedBraces">
      <property name="tokens"
               value="LITERAL_DO, LITERAL_ELSE, LITERAL_FOR, LITERAL_IF, LITERAL_WHILE"/>
    </module>
    <module name="LeftCurly">
      <property name="id" value="LeftCurlyEol"/>
      <property name="tokens"
                value="ANNOTATION_DEF, CLASS_DEF, CTOR_DEF, ENUM_CONSTANT_DEF, ENUM_DEF,
                    INTERFACE_DEF, LAMBDA, LITERAL_CATCH,
                    LITERAL_DO, LITERAL_ELSE, LITERAL_FINALLY, LITERAL_FOR, LITERAL_IF,
                    LITERAL_SWITCH, LITERAL_SYNCHRONIZED, LITERAL_TRY, LITERAL_WHILE, METHOD_DEF,
                    OBJBLOCK, STATIC_INIT, RECORD_DEF, COMPACT_CTOR_DEF"/>
    </module>
    <module name="LeftCurly">
      <property name="id" value="LeftCurlyNl"/>
      <property name="option" value="nl"/>
      <property name="tokens"
                value="LITERAL_CASE, LITERAL_DEFAULT"/>
    </module>
    <module name="SuppressionXpathSingleFilter">
      <!-- LITERAL_CASE, LITERAL_DEFAULT are reused in SWITCH_RULE  -->
      <property name="id" value="LeftCurlyNl"/>
      <property name="query" value="//SWITCH_RULE/SLIST"/>
    </module>
    <module name="RightCurly">
      <property name="id" value="RightCurlySame"/>
      <property name="tokens"
                value="LITERAL_TRY, LITERAL_CATCH, LITERAL_IF, LITERAL_ELSE,
                    LITERAL_DO"/>
    </module>
    <module name="SuppressionXpathSingleFilter">
      <property name="id" value="RightCurlySame"/>
      <property name="query" value="//RCURLY[parent::SLIST[parent::LITERAL_CATCH
                               and not(parent::LITERAL_CATCH/following-sibling::*)]]"/>
    </module>
    <module name="RightCurly">
      <property name="id" value="RightCurlyAlone"/>
      <property name="option" value="alone"/>
      <property name="tokens"
               value="CLASS_DEF, METHOD_DEF, CTOR_DEF, LITERAL_FOR, LITERAL_WHILE, STATIC_INIT,
                    INSTANCE_INIT, ANNOTATION_DEF, ENUM_DEF, INTERFACE_DEF, RECORD_DEF,
                    COMPACT_CTOR_DEF, LITERAL_SWITCH, LITERAL_CASE, LITERAL_FINALLY,
                    LITERAL_CATCH"/>
    </module>
    <module name="SuppressionXpathSingleFilter">
      <!-- suppression is required till https://github.com/checkstyle/checkstyle/issues/7541 -->
      <property name="id" value="RightCurlyAlone"/>
      <property name="query" value="//RCURLY[parent::SLIST[count(./*)=1
                               and not(parent::LITERAL_CATCH)]
                               or (preceding-sibling::*[last()][self::LCURLY]
                               and not(parent::SLIST/parent::LITERAL_CATCH))
                               or (parent::SLIST/parent::LITERAL_CATCH
                               and parent::SLIST/parent::LITERAL_CATCH/following-sibling::*)]"/>
    </module>
    <module name="WhitespaceAfter">
      <property name="tokens"
               value="COMMA, SEMI, TYPECAST, LITERAL_IF, LITERAL_ELSE, LITERAL_RETURN,
                    LITERAL_WHILE, LITER
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值