我是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>
似乎
MethodLength
被LineLength
覆盖例子2
当我在评论中添加链接时,例如:
https://android.googlesource.com/platform/frameworks/base/+/refs/heads/master/media/java/android/media/MediaFile.java
显然此链接太长了,我该如何处理?
最佳答案
太棒了,您正在寻找Checkstyle!这对许多任务来说是一个很好的工具,尽管远非完美,也绝不是万能的解决方案。
关于LineLength和MethodLength检查:这些实际上检查了两个非常不同的事物:
LineLength检查文件中文本的实际长度
MethodLength检查方法中的行数(是,是行,不是语句,这就是ExecutableStatementCount的作用)
因此,通常您将同时启用LineLength和MethodLength(或ExecutableStatementCount,与MethodLength相比,我更喜欢)。
必须将LineLength配置为处理无法缩短的长行,例如您的链接示例。默认情况下,Checkstyle的最新版本处理package
和import
语句。该检查还具有ignorePattern
,您可以设置来过滤掉其他长行。该文档提供了以下示例:
<module name="LineLength">
<property name="ignorePattern" value="^ *\* *[^ ]+$"/>
</module>
在此示例中,其中Javadoc仅包含一个单词的行(此处,表示星号后没有空格)将不会被标记,无论它们的长度如何。这样,您应该能够处理大部分案件。