diff options
author | Vladislav Lisetskiy <vladlis54@gmail.com> | 2015-11-10 02:15:09 +0300 |
---|---|---|
committer | Roman Ivanov <ivanov-jr@mail.ru> | 2015-11-11 12:46:37 -0800 |
commit | 3b26b571a8dae611366c481aa1fce606ca1f1cfa (patch) | |
tree | da1ad47ffcb1d807ade4039af86ddd24b21f472e /src/main | |
parent | fb2ec00cc72fa6edc0894e337b8176adcc2eb974 (diff) | |
download | checkstyle-3b26b571a8dae611366c481aa1fce606ca1f1cfa.tar.gz |
Issue #2067: Fix false-negatives in EmptyLineSeparatorCheck
Diffstat (limited to 'src/main')
9 files changed, 41 insertions, 14 deletions
diff --git a/src/main/java/com/puppycrawl/tools/checkstyle/checks/whitespace/EmptyLineSeparatorCheck.java b/src/main/java/com/puppycrawl/tools/checkstyle/checks/whitespace/EmptyLineSeparatorCheck.java index 7561b381a..aec8b5c7f 100644 --- a/src/main/java/com/puppycrawl/tools/checkstyle/checks/whitespace/EmptyLineSeparatorCheck.java +++ b/src/main/java/com/puppycrawl/tools/checkstyle/checks/whitespace/EmptyLineSeparatorCheck.java @@ -161,6 +161,13 @@ public class EmptyLineSeparatorCheck extends Check { */ public static final String MSG_MULTIPLE_LINES = "empty.line.separator.multiple.lines"; + /** + * A key is pointing to the warning message empty.line.separator.lines.after + * in "messages.properties" file. + */ + public static final String MSG_MULTIPLE_LINES_AFTER = + "empty.line.separator.multiple.lines.after"; + /** Allows no empty line between fields. */ private boolean allowNoEmptyLineBetweenFields; @@ -212,8 +219,11 @@ public class EmptyLineSeparatorCheck extends Check { @Override public void visitToken(DetailAST ast) { - final DetailAST nextToken = ast.getNextSibling(); + if (hasMultipleLinesBefore(ast)) { + log(ast.getLineNo(), MSG_MULTIPLE_LINES, ast.getText()); + } + final DetailAST nextToken = ast.getNextSibling(); if (nextToken != null) { final int astType = ast.getType(); switch (astType) { @@ -227,17 +237,35 @@ public class EmptyLineSeparatorCheck extends Check { processPackage(ast, nextToken); break; default: - if (nextToken.getType() != TokenTypes.RCURLY && !hasEmptyLineAfter(ast)) { - log(nextToken.getLineNo(), MSG_SHOULD_BE_SEPARATED, nextToken.getText()); + if (nextToken.getType() == TokenTypes.RCURLY) { + if (hasNotAllowedTwoEmptyLinesBefore(nextToken)) { + log(ast.getLineNo(), MSG_MULTIPLE_LINES_AFTER, ast.getText()); + } } - if (hasNotAllowedTwoEmptyLinesBefore(ast)) { - log(ast.getLineNo(), MSG_MULTIPLE_LINES, ast.getText()); + else if (!hasEmptyLineAfter(ast)) { + log(nextToken.getLineNo(), MSG_SHOULD_BE_SEPARATED, + nextToken.getText()); } } } } /** + * Whether the token has not allowed multiple empty lines before. + * @param ast the ast to check. + * @return true if the token has not allowed multiple empty lines before. + */ + private boolean hasMultipleLinesBefore(DetailAST ast) { + boolean result = false; + if ((ast.getType() != TokenTypes.VARIABLE_DEF + || isTypeField(ast)) + && hasNotAllowedTwoEmptyLinesBefore(ast)) { + result = true; + } + return result; + } + + /** * Process Package. * @param ast token * @param nextToken next token @@ -249,9 +277,6 @@ public class EmptyLineSeparatorCheck extends Check { if (!hasEmptyLineAfter(ast)) { log(nextToken.getLineNo(), MSG_SHOULD_BE_SEPARATED, nextToken.getText()); } - if (hasNotAllowedTwoEmptyLinesBefore(ast)) { - log(ast.getLineNo(), MSG_MULTIPLE_LINES, ast.getText()); - } } /** @@ -264,9 +289,6 @@ public class EmptyLineSeparatorCheck extends Check { if (astType != nextToken.getType() && !hasEmptyLineAfter(ast)) { log(nextToken.getLineNo(), MSG_SHOULD_BE_SEPARATED, nextToken.getText()); } - if (hasNotAllowedTwoEmptyLinesBefore(ast)) { - log(ast.getLineNo(), MSG_MULTIPLE_LINES, ast.getText()); - } } /** @@ -280,9 +302,6 @@ public class EmptyLineSeparatorCheck extends Check { log(nextToken.getLineNo(), MSG_SHOULD_BE_SEPARATED, nextToken.getText()); } - if (isTypeField(ast) && hasNotAllowedTwoEmptyLinesBefore(ast)) { - log(ast.getLineNo(), MSG_MULTIPLE_LINES, ast.getText()); - } } /** diff --git a/src/main/resources/com/puppycrawl/tools/checkstyle/checks/whitespace/messages.properties b/src/main/resources/com/puppycrawl/tools/checkstyle/checks/whitespace/messages.properties index d87d9e987..b306a8c27 100644 --- a/src/main/resources/com/puppycrawl/tools/checkstyle/checks/whitespace/messages.properties +++ b/src/main/resources/com/puppycrawl/tools/checkstyle/checks/whitespace/messages.properties @@ -1,5 +1,6 @@ empty.line.separator=''{0}'' should be separated from previous statement. empty.line.separator.multiple.lines=''{0}'' has more than 1 empty lines before. +empty.line.separator.multiple.lines.after=''{0}'' has more than 1 empty lines after. containsTab=Line contains a tab character. file.containsTab=File contains tab characters (this is the first instance). diff --git a/src/main/resources/com/puppycrawl/tools/checkstyle/checks/whitespace/messages_de.properties b/src/main/resources/com/puppycrawl/tools/checkstyle/checks/whitespace/messages_de.properties index bfbf25924..442b7d66e 100644 --- a/src/main/resources/com/puppycrawl/tools/checkstyle/checks/whitespace/messages_de.properties +++ b/src/main/resources/com/puppycrawl/tools/checkstyle/checks/whitespace/messages_de.properties @@ -1,4 +1,5 @@ empty.line.separator=''{0}'' sollte vom vorangehenden Ausdruck getrennt stehen. +empty.line.separator.multiple.lines.after=''{0}'' hat mehr als 1 Leerzeilen nach. containsTab=Zeile enthält ein TAB-Zeichen file.containsTab=Datei enthält Tabulatorzeichen (diese Stelle ist das erste Vorkommnen). diff --git a/src/main/resources/com/puppycrawl/tools/checkstyle/checks/whitespace/messages_es.properties b/src/main/resources/com/puppycrawl/tools/checkstyle/checks/whitespace/messages_es.properties index c6b9786d4..cdadaf60e 100644 --- a/src/main/resources/com/puppycrawl/tools/checkstyle/checks/whitespace/messages_es.properties +++ b/src/main/resources/com/puppycrawl/tools/checkstyle/checks/whitespace/messages_es.properties @@ -13,6 +13,7 @@ ws.typeCast=''conversión de tipos'' no está seguido de espacio en blanco. empty.line.separator = ''{0}'' debe ser separado de la declaración anterior. empty.line.separator.multiple.lines = ''{0}'' cuenta con más de 1 líneas vacías antes. +empty.line.separator.multiple.lines.after=''{0}'' cuenta con más de 1 líneas vacías después. file.containsTab = Archivo contiene caracteres de tabulación (este es el primer ejemplo). no.line.wrap = {0} declaración no debe ser la línea envuelto. ws.illegalFollow = ''{0}'' es seguido por un carácter ilegal. diff --git a/src/main/resources/com/puppycrawl/tools/checkstyle/checks/whitespace/messages_fi.properties b/src/main/resources/com/puppycrawl/tools/checkstyle/checks/whitespace/messages_fi.properties index bf19ad16d..449ee1908 100644 --- a/src/main/resources/com/puppycrawl/tools/checkstyle/checks/whitespace/messages_fi.properties +++ b/src/main/resources/com/puppycrawl/tools/checkstyle/checks/whitespace/messages_fi.properties @@ -14,5 +14,6 @@ ws.illegalFollow=''{0}'' seuraa laiton merkki. empty.line.separator = ''{0}'' olisi erotettava edellisen selonteon. empty.line.separator.multiple.lines = ''{0}'' on yli 1 tyhjää riviä ennen. +empty.line.separator.multiple.lines.after=''{0}'' on yli 1 tyhjää riviä jälkeen. file.containsTab = Tiedosto sisältää sarkainmerkeillä (tämä on ensisijaisesti). no.line.wrap = {0} lausunto ei pitäisi olla linja-kääritty. diff --git a/src/main/resources/com/puppycrawl/tools/checkstyle/checks/whitespace/messages_fr.properties b/src/main/resources/com/puppycrawl/tools/checkstyle/checks/whitespace/messages_fr.properties index 8ac593506..ced7345bc 100644 --- a/src/main/resources/com/puppycrawl/tools/checkstyle/checks/whitespace/messages_fr.properties +++ b/src/main/resources/com/puppycrawl/tools/checkstyle/checks/whitespace/messages_fr.properties @@ -14,5 +14,6 @@ ws.illegalFollow=''{0}'' est suivi par un caractère illégal. empty.line.separator = ''{0}'' doit être séparé de la déclaration précédente. empty.line.separator.multiple.lines = ''{0}'' a plus de 1 lignes vides avant. +empty.line.separator.multiple.lines.after=''{0}'' compte plus de 1 lignes vides après. file.containsTab = Fichier contient des caractères de tabulation (ce qui est le premier exemple). no.line.wrap = {0} déclaration ne devrait pas être sur des lignes enveloppé. diff --git a/src/main/resources/com/puppycrawl/tools/checkstyle/checks/whitespace/messages_ja.properties b/src/main/resources/com/puppycrawl/tools/checkstyle/checks/whitespace/messages_ja.properties index d6bbc579e..79984b3d0 100644 --- a/src/main/resources/com/puppycrawl/tools/checkstyle/checks/whitespace/messages_ja.properties +++ b/src/main/resources/com/puppycrawl/tools/checkstyle/checks/whitespace/messages_ja.properties @@ -14,5 +14,6 @@ ws.illegalFollow=が ''{0}'' 不正な文字が続いています。 empty.line.separator = ''{0}'' 前の文から分離する必要があります。 empty.line.separator.multiple.lines = ''{0}'' の前に1以上の空行を持っています。 +empty.line.separator.multiple.lines.after=''{0}'' 後の1以上の空行を持っています。 file.containsTab = ファイルが(これが最初のインスタンスである)タブ文字が含まれています。 no.line.wrap = {0} 文は、行ラップされてはなりません。 diff --git a/src/main/resources/com/puppycrawl/tools/checkstyle/checks/whitespace/messages_pt.properties b/src/main/resources/com/puppycrawl/tools/checkstyle/checks/whitespace/messages_pt.properties index 1789959ab..d9f877385 100644 --- a/src/main/resources/com/puppycrawl/tools/checkstyle/checks/whitespace/messages_pt.properties +++ b/src/main/resources/com/puppycrawl/tools/checkstyle/checks/whitespace/messages_pt.properties @@ -14,5 +14,6 @@ ws.illegalFollow=''{0}'' é seguido por um carácter ilegal. empty.line.separator = ''{0}'' deve ser separada da declaração anterior. empty.line.separator.multiple.lines = ''{0}'' tem mais de 1 linhas vazias antes. +empty.line.separator.multiple.lines.after=''{0}'' tem mais de 1 linhas vazias depois. file.containsTab = Arquivo contém caracteres de tabulação (esta é a primeira instância). no.line.wrap = {0} afirmação não deve ser linha-embrulhado. diff --git a/src/main/resources/com/puppycrawl/tools/checkstyle/checks/whitespace/messages_tr.properties b/src/main/resources/com/puppycrawl/tools/checkstyle/checks/whitespace/messages_tr.properties index 4063c011b..c5b27c3f4 100644 --- a/src/main/resources/com/puppycrawl/tools/checkstyle/checks/whitespace/messages_tr.properties +++ b/src/main/resources/com/puppycrawl/tools/checkstyle/checks/whitespace/messages_tr.properties @@ -18,4 +18,5 @@ ws.typeCast=''türü dönüştürme'' ifadesinden sonra boşluk kullanılmamış empty.line.separator = {0} 'Bir önceki deyimi ayrılmalıdır. empty.line.separator.multiple.lines = {0} daha önce en fazla 1 boş hatları vardır. +empty.line.separator.multiple.lines.after=''{0}'' sonra 1'den fazla boş hatları vardır. no.line.wrap = {0} ifadesi hattı sarılı olmamalıdır. |