Первое предложение должно заканчиваться точкой.

Меня смущает и сбивает с толку контрольный стиль Java.

package pmain;

/**
 * Some text here.
 */

public class Main {

}

Это буквально весь код, который у меня есть. Checkstyle отображает «Первое предложение должно заканчиваться точкой». в "/**".

Почему CheckStyle выдает это предупреждение?

Может ли конфигурация checkstyle, которую я должен использовать, быть нарушена? Я делаю что-то неправильно? Разве "Некоторый текст здесь" не первое предложение? Является "." не период?


person Klaabu    schedule 29.10.2012    source источник
comment
Есть ли разница, если вы удалите пустую строку между комментарием и определением класса?   -  person DNA    schedule 30.10.2012
comment
По крайней мере, я могу это подтвердить. является периодом. :D   -  person chm    schedule 30.10.2012
comment
Я только что попробовал, и это не имеет никакого значения, если я удалю пустую строку между комментарием и определением класса.   -  person Klaabu    schedule 30.10.2012
comment
Попробуйте поставить точку после оператора package. Вы получите ошибку компилятора, но заткнется ли checkstyle?   -  person 11684    schedule 30.10.2012
comment
Я тоже этому рад. еще период. Это было бы неловко. Я даже попытался сделать комментарий грамматически правильным предложением. Еще ничего.   -  person Klaabu    schedule 30.10.2012
comment
Точка после оператора package по-прежнему выдает ошибку checkstyle в том же месте в дополнение к ошибке компилятора в первой строке.   -  person Klaabu    schedule 30.10.2012
comment
@DNA Пробел между комментарием Javadoc и методом не имеет значения.   -  person user207421    schedule 30.10.2012


Ответы (6)


Первое предложение должно заканчиваться точкой.

/**
 *An abstract class that represents an algorithm.
 *
 * @author zhangtj
 *
 * @version 1.0
*/

Прошел бы.

person Jimmy Zhang    schedule 29.12.2012
comment
Я уверен, что это неподходящее место, чтобы спрашивать, почему это рекомендация по стилю, но где это место? Ваш пример действительно проходит проверку, но это не предложение (без глагола). Я должен представить, что дух чека заключается в том, чтобы заставить его быть приговором. - person MatrixManAtYrService; 23.11.2017
comment
Первое предложение до точки отображается в списке методов обзора класса Javadoc. Как минимум некрасиво, если одни записи заканчиваются точкой, а другие нет. - person dschulten; 26.06.2019

Только что проверил на своей машине и на самом деле не могу воспроизвести: я не получаю предупреждение с точкой в ​​конце предложения. Но как только я удаляю его (и снова запускаю checkstyle), правило срабатывает правильно, и я получаю предупреждение в строке /**.

Пустая строка после комментария не имеет значения.

Дважды проверьте, что точка действительно является точкой, а не каким-то другим символом, который «выглядит» как точка. И дважды проверьте, что вы действительно повторно запускаете checkstyle после того, как изменили файл. Он не будет выполнять проверки автоматически.


Может кто игрался с настройками чекстайла. На самом деле есть два свойства, которые управляют этим правилом: checkFirstSentence, которое либо истинно, либо ложно, и endOfSentenceFormat, которое является регулярным выражением и должно соответствовать точке. Но если набор правил переопределил это свойство... ;)

Дополнительная литература

person Andreas Dolk    schedule 29.10.2012
comment
Также почистите экран. Иногда эта точка представляет собой специю еды. Просто говорю. - person Tim Bender; 30.10.2012
comment
Я скопировал этот код, так что какой бы символ он ни был, это тот же символ в бите кода моего вопроса. Я также скопировал ваш первый период в свой код. Я также повторно запустил контрольный стиль снова. Ничего такого. - person Klaabu; 30.10.2012
comment
Как я уже сказал в вопросе, я должен использовать определенную конфигурацию checksyle для задания. Я использую удаленную конфигурацию, которая указывает на ссылку. - person Klaabu; 30.10.2012
comment
Я настроил eclipse на использование тех же удаленных правил и ничего. Не могу воспроизвести с вашим образцом и вашими правилами. Извиняюсь. - person Andreas Dolk; 30.10.2012
comment
Ха-ха, хорошо. Кажется, что-то очень странное. Я поговорю с кем-нибудь, кто знает чекстайл и может возиться с моим компьютером. Спасибо, что помогли мне понять, что это проблема ошибок и устранения неполадок, а не проблема, связанная с тем, что я ужасен в программировании. - person Klaabu; 30.10.2012

Меня это просто раздражало. Чтобы удалить это, добавьте:

...

<module name="JavadocStyle">
   <property name="checkFirstSentence" value="false"/>
</module>

...

Кроме того, я ПОЛНОСТЬЮ удалил модуль SummaryJavadoc.

в вашем checkstyle.xml, чтобы отключить эту галочку.

См.: http://checkstyle.sourceforge.net/config_javadoc.html#JavadocStyle & http://checkstyle.sourceforge.net/config_javadoc.html#SummaryJavadoc

person theINtoy    schedule 27.04.2016
comment
Было бы понятнее, если бы вы указали, что оба необходимы для устранения этой ошибки. Удаление SummaryJavadoc является не просто предпочтением, оно фактически требуется как шаг 2, чтобы избавиться от этой ошибки периода предложения. - person gene b.; 29.04.2019

Thin может быть вызван пробелом после конца комментария или '.'

person aarathi    schedule 05.06.2014

Ваша проблема связана с отсутствием . в конце строки. Чтобы исправить это, вам нужно переопределить свойство period. Его значение по умолчанию — символ ..

Согласно последней документации Checkstyle, это рекомендуемая конфигурация, чтобы избавиться от “ First sentence should end with a period.» предупреждение:

<module name="SummaryJavadoc">
    <property name="forbiddenSummaryFragments" value="^@return the *|^This method returns |^A [{]@code [a-zA-Z0-9]+[}]( is a )"/>
    <property name="period" value=""/>
</module>

Если приведенное выше решение не работает, вы можете использовать следующее альтернативное решение:

Переопределите значение по умолчанию свойства endOfSentenceFormat.

Значение по умолчанию:

([.?!:][ \t\n\r\f&lt;])|([.?!:]$)

Новое значение, принимает любую цифру и букву в конце строки:

([.?!:][ \t\n\r\f&lt;])|([\d\w.?!:]$)

Полная конфигурация Checksytle:

<module name="JavadocStyle">
    <property name="scope" value="public"/>
    <property name="checkEmptyJavadoc" value="true"/>
    <property name="tokens" value="ANNOTATION_DEF, ANNOTATION_FIELD_DEF, CLASS_DEF, CTOR_DEF, ENUM_DEF, INTERFACE_DEF, METHOD_DEF, PACKAGE_DEF, VARIABLE_DEF"/>
    <property name="endOfSentenceFormat" value="([.?!:][ \t\n\r\f&lt;])|([\d\w.?!:]$)"/>
</module>
person zappee    schedule 13.05.2020

Я использую 2 строки, чтобы избежать этого предупреждения. Например:

/**
 * Let's call this as the first sentence,
 * here the second one.
*/
person Egor    schedule 11.11.2017