From e708beb537e90a913c8692174dbdf48c5277d014 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lars=20K=C3=BChne?= Date: Mon, 13 Oct 2003 04:41:36 +0000 Subject: [PATCH] Strip basename from reported secondary filename in StrictDuplicateCodeCheck. Required moving getStrippedFileName() from Checker to Utils. --- .../puppycrawl/tools/checkstyle/Checker.java | 13 +++-------- .../tools/checkstyle/api/Utils.java | 23 +++++++++++++++++++ .../duplicates/StrictDuplicateCodeCheck.java | 13 ++++++++++- 3 files changed, 38 insertions(+), 11 deletions(-) diff --git a/src/checkstyle/com/puppycrawl/tools/checkstyle/Checker.java b/src/checkstyle/com/puppycrawl/tools/checkstyle/Checker.java index 7a213fa10..af12daf41 100644 --- a/src/checkstyle/com/puppycrawl/tools/checkstyle/Checker.java +++ b/src/checkstyle/com/puppycrawl/tools/checkstyle/Checker.java @@ -38,6 +38,7 @@ import com.puppycrawl.tools.checkstyle.api.FilterSet; import com.puppycrawl.tools.checkstyle.api.LocalizedMessage; import com.puppycrawl.tools.checkstyle.api.MessageDispatcher; import com.puppycrawl.tools.checkstyle.api.SeverityLevel; +import com.puppycrawl.tools.checkstyle.api.Utils; /** * This class provides the functionality to check a set of files. @@ -170,6 +171,7 @@ public class Checker extends AutomaticBean context.add("classLoader", mLoader); context.add("moduleFactory", mModuleFactory); context.add("severity", mSeverityLevel.getName()); + context.add("basedir", mBasedir); mChildContext = context; } @@ -279,16 +281,7 @@ public class Checker extends AutomaticBean */ private String getStrippedFileName(final String aFileName) { - final String stripped; - if ((mBasedir == null) || !aFileName.startsWith(mBasedir)) { - stripped = aFileName; - } - else { - // making the assumption that there is text after basedir - final int skipSep = mBasedir.endsWith(File.separator) ? 0 : 1; - stripped = aFileName.substring(mBasedir.length() + skipSep); - } - return stripped; + return Utils.getStrippedFileName(mBasedir, aFileName); } /** @param aBasedir the base directory to strip off in filenames */ diff --git a/src/checkstyle/com/puppycrawl/tools/checkstyle/api/Utils.java b/src/checkstyle/com/puppycrawl/tools/checkstyle/api/Utils.java index f240f72c9..00ac82552 100644 --- a/src/checkstyle/com/puppycrawl/tools/checkstyle/api/Utils.java +++ b/src/checkstyle/com/puppycrawl/tools/checkstyle/api/Utils.java @@ -22,6 +22,7 @@ package com.puppycrawl.tools.checkstyle.api; import java.io.FileReader; import java.io.IOException; import java.io.LineNumberReader; +import java.io.File; import java.util.ArrayList; import java.util.HashMap; import java.util.Map; @@ -209,4 +210,26 @@ public final class Utils final int i = aType.lastIndexOf("."); return (i == -1) ? aType : aType.substring(i + 1); } + + /** + * Create a stripped down version of a filename. + * @param aBasedir the prefix to strip off the original filename + * @param aFileName the original filename + * @return the filename where an initial prefix of basedir is stripped + */ + public static String getStrippedFileName( + final String aBasedir, final String aFileName) + { + final String stripped; + if ((aBasedir == null) || !aFileName.startsWith(aBasedir)) { + stripped = aFileName; + } + else { + // making the assumption that there is text after basedir + final int skipSep = aBasedir.endsWith(File.separator) ? 0 : 1; + stripped = aFileName.substring(aBasedir.length() + skipSep); + } + return stripped; + } + } diff --git a/src/checkstyle/com/puppycrawl/tools/checkstyle/checks/duplicates/StrictDuplicateCodeCheck.java b/src/checkstyle/com/puppycrawl/tools/checkstyle/checks/duplicates/StrictDuplicateCodeCheck.java index b1b701753..71d358367 100644 --- a/src/checkstyle/com/puppycrawl/tools/checkstyle/checks/duplicates/StrictDuplicateCodeCheck.java +++ b/src/checkstyle/com/puppycrawl/tools/checkstyle/checks/duplicates/StrictDuplicateCodeCheck.java @@ -157,6 +157,9 @@ public final class StrictDuplicateCodeCheck extends AbstractFileSetCheck /** number of lines that have to be idential for reporting duplicates */ private int mMin = DEFAULT_MIN_DUPLICATE_LINES; + /** the basedir to strip off in filenames */ + private String mBasedir; + /** the checksums of all files that are currently checked */ private long[][] mLineChecksums; @@ -197,6 +200,12 @@ public final class StrictDuplicateCodeCheck extends AbstractFileSetCheck mMin = aMin; } + /** @param aBasedir the base directory to strip off in filenames */ + public void setBasedir(String aBasedir) + { + mBasedir = aBasedir; + } + /** * @see com.puppycrawl.tools.checkstyle.api.AbstractFileSetCheck#process */ @@ -432,8 +441,10 @@ public final class StrictDuplicateCodeCheck extends AbstractFileSetCheck { final Integer dupLines = new Integer(aEquivalent); final Integer startLine = new Integer(aJLine + 1); + final String fileName = + Utils.getStrippedFileName(mBasedir, aJFile.getPath()); log(aILine + 1, "duplicates.lines", - new Object[]{dupLines, aJFile, startLine}); + new Object[]{dupLines, fileName, startLine}); mDuplicates += 1; }