关于 checkstyle 的小贴士

Tips about checkstyle

我是 CheckStyle 的新手,在某些情况下我没有任何好主意。

示例 1

 void loadThumbnail(Context context, int resize, Drawable placeholder, ImageView imageView, Uri uri);

如您所见,该方法的长度太长了long.So 我使用:

     <module name="LineLength">
       <property name="max" value="100"/>
    </module>
    <module name="MethodLength">
        <property name="max" value="140"/>
    </module>

似乎 MethodLengthLineLength

覆盖了

示例 2

当我将 link 放入评论中时,例如:

https://android.googlesource.com/platform/frameworks/base/+/refs/heads/master/media/java/android/media/MediaFile.java

很明显这个link太long.How我可以处理吗?

  1. 如果您使用的是像 eclipse 这样的 IDE,您可以使用格式化来帮助您换行。满足CheckStyle行长。

  2. MethodLength CheckStyle 要求您查看方法并将其重构为更小的方法,这些方法只有一个任务要执行。

很高兴您正在研究 Checkstyle!它是完成许多任务的好工具,尽管远非完美,而且绝不是万能的解决方案。

关于 LineLength and MethodLength 检查:这些实际上检查两个非常不同的东西:

  • LineLength 检查文件中一行文本的实际长度
  • MethodLength 检查方法中的行数(是的,行数,不是语句,这就是 ExecutableStatementCount 的用途)

所以您通常会同时启用 LineLengthMethodLength(或 ExecutableStatementCount,我优于 MethodLength).

LineLength 必须配置为处理无法缩短的长行,例如您的 link 示例。 Checkstyle 的最新版本默认处理 packageimport 语句。该支票还具有一个 ignorePattern 功能,您可以设置它来过滤掉其他长行。文档给出了这个例子:

<module name="LineLength">
   <property name="ignorePattern" value="^ *\* *[^ ]+$"/>
</module>

在此示例中,Javadoc 仅包含一个单词的行(此处表示除了星号之后没有空格),无论其长度如何都不会被标记。这样,你应该可以覆盖你的大部分情况了。