aboutsummaryrefslogtreecommitdiff
path: root/src/main
diff options
context:
space:
mode:
authorVladislav Lisetskiy <vladlis54@gmail.com>2015-11-10 02:15:09 +0300
committerRoman Ivanov <ivanov-jr@mail.ru>2015-11-11 12:46:37 -0800
commit3b26b571a8dae611366c481aa1fce606ca1f1cfa (patch)
treeda1ad47ffcb1d807ade4039af86ddd24b21f472e /src/main
parentfb2ec00cc72fa6edc0894e337b8176adcc2eb974 (diff)
downloadcheckstyle-3b26b571a8dae611366c481aa1fce606ca1f1cfa.tar.gz
Issue #2067: Fix false-negatives in EmptyLineSeparatorCheck
Diffstat (limited to 'src/main')
-rw-r--r--src/main/java/com/puppycrawl/tools/checkstyle/checks/whitespace/EmptyLineSeparatorCheck.java47
-rw-r--r--src/main/resources/com/puppycrawl/tools/checkstyle/checks/whitespace/messages.properties1
-rw-r--r--src/main/resources/com/puppycrawl/tools/checkstyle/checks/whitespace/messages_de.properties1
-rw-r--r--src/main/resources/com/puppycrawl/tools/checkstyle/checks/whitespace/messages_es.properties1
-rw-r--r--src/main/resources/com/puppycrawl/tools/checkstyle/checks/whitespace/messages_fi.properties1
-rw-r--r--src/main/resources/com/puppycrawl/tools/checkstyle/checks/whitespace/messages_fr.properties1
-rw-r--r--src/main/resources/com/puppycrawl/tools/checkstyle/checks/whitespace/messages_ja.properties1
-rw-r--r--src/main/resources/com/puppycrawl/tools/checkstyle/checks/whitespace/messages_pt.properties1
-rw-r--r--src/main/resources/com/puppycrawl/tools/checkstyle/checks/whitespace/messages_tr.properties1
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.