From 7c262e61e676982d7d33a42971b885d97b95f456 Mon Sep 17 00:00:00 2001 From: alexkravin Date: Mon, 9 Feb 2015 22:38:28 +0400 Subject: [PATCH] Empty Line Separator Check, fixed Exception if file doesn't have header, issue #621 --- .../checks/whitespace/EmptyLineSeparatorCheck.java | 8 ++++++-- .../whitespace/EmptyLineSeparatorCheckTest.java | 11 +++++++++++ .../InputEmptyLineSeparatorFormerException.java | 6 ++++++ 3 files changed, 23 insertions(+), 2 deletions(-) create mode 100644 src/test/resources/com/puppycrawl/tools/checkstyle/whitespace/InputEmptyLineSeparatorFormerException.java 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 fe86658a0..95ef4ae07 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 @@ -285,11 +285,15 @@ public class EmptyLineSeparatorCheck extends Check */ private boolean isPrePreviousLineEmpty(DetailAST token) { + boolean result = false; final int lineNo = token.getLineNo(); // 3 is the number of the pre-previous line because the numbering starts from zero. final int number = 3; - final String prePreviousLine = getLines()[lineNo - number]; - return prePreviousLine.trim().isEmpty(); + if (lineNo >= number) { + final String prePreviousLine = getLines()[lineNo - number]; + result = prePreviousLine.trim().isEmpty(); + } + return result; } /** diff --git a/src/test/java/com/puppycrawl/tools/checkstyle/checks/whitespace/EmptyLineSeparatorCheckTest.java b/src/test/java/com/puppycrawl/tools/checkstyle/checks/whitespace/EmptyLineSeparatorCheckTest.java index 2c34b1814..3585c50fb 100644 --- a/src/test/java/com/puppycrawl/tools/checkstyle/checks/whitespace/EmptyLineSeparatorCheckTest.java +++ b/src/test/java/com/puppycrawl/tools/checkstyle/checks/whitespace/EmptyLineSeparatorCheckTest.java @@ -81,4 +81,15 @@ public class EmptyLineSeparatorCheckTest }; verify(checkConfig, getPath("whitespace/InputEmptyLineSeparatorCheckMultipleEmptyLines.java"), expected); } + + @Test + public void testFormerArrayIndexOutOfBounds() throws Exception + { + DefaultConfiguration checkConfig = createCheckConfig(EmptyLineSeparatorCheck.class); + checkConfig.addAttribute("allowMultipleEmptyLines", "false"); + final String[] expected = { + + }; + verify(checkConfig, getPath("whitespace/InputEmptyLineSeparatorFormerException.java"), expected); + } } diff --git a/src/test/resources/com/puppycrawl/tools/checkstyle/whitespace/InputEmptyLineSeparatorFormerException.java b/src/test/resources/com/puppycrawl/tools/checkstyle/whitespace/InputEmptyLineSeparatorFormerException.java new file mode 100644 index 000000000..f6d8f3798 --- /dev/null +++ b/src/test/resources/com/puppycrawl/tools/checkstyle/whitespace/InputEmptyLineSeparatorFormerException.java @@ -0,0 +1,6 @@ +package com.puppycrawl.tools.checkstyle.whitespace; + +public class InputEmptyLineSeparatorFormerException +{ + +}