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

例子1

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


如您所见,该方法的长度太长,因此我使用了:

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


似乎MethodLengthLineLength覆盖

例子2

当我在评论中添加链接时,例如:

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

显然此链接太长了,我该如何处理?

最佳答案

太棒了,您正在寻找Checkstyle!这对许多任务来说是一个很好的工具,尽管远非完美,也绝不是万能的解决方案。

关于LineLengthMethodLength检查:这些实际上检查了两个非常不同的事物:


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


因此,通常您将同时启用LineLength和MethodLength(或ExecutableStatementCount,与MethodLength相比,我更喜欢)。

必须将LineLength配置为处理无法缩短的长行,例如您的链接示例。默认情况下,Checkstyle的最新版本处理packageimport语句。该检查还具有ignorePattern,您可以设置来过滤掉其他长行。该文档提供了以下示例:

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


在此示例中,其中Javadoc仅包含一个单词的行(此处,表示星号后没有空格)将不会被标记,无论它们的长度如何。这样,您应该能够处理大部分案件。

10-08 10:51