Class FileContents

    • Field Summary

      Fields 
      Modifier and Type Field Description
      private java.util.Map<java.lang.Integer,​java.util.List<TextBlock>> clangComments
      Map of the C comments indexed on the first line of the comment to a list of comments on that line.
      private java.util.Map<java.lang.Integer,​TextBlock> cppComments
      Map of the C++ comments indexed on the first line of the comment.
      private java.util.Map<java.lang.Integer,​TextBlock> javadocComments
      Map of the Javadoc comments indexed on the last line of the comment.
      private static java.util.regex.Pattern MATCH_SINGLELINE_COMMENT
      Compiled regexp to match a single-line comment line.
      private static java.lang.String MATCH_SINGLELINE_COMMENT_PAT
      The pattern to match a single-line comment containing only the comment itself -- no code.
      private FileText text
      The text.
    • Constructor Summary

      Constructors 
      Constructor Description
      FileContents​(FileText text)
      Creates a new FileContents instance.
    • Method Summary

      All Methods Instance Methods Concrete Methods Deprecated Methods 
      Modifier and Type Method Description
      private java.lang.String[] extractBlockComment​(int startLineNo, int startColNo, int endLineNo, int endColNo)
      Returns the specified block comment as a String array.
      java.util.Map<java.lang.Integer,​java.util.List<TextBlock>> getBlockComments()
      Returns a map of all block comments.
      java.lang.String getFileName()
      Gets the name of the file.
      TextBlock getJavadocBefore​(int lineNoBefore)
      Returns the Javadoc comment before the specified line.
      java.lang.String getLine​(int index)
      Get the line from text of the file.
      java.lang.String[] getLines()
      Gets the lines in the file.
      java.util.Map<java.lang.Integer,​TextBlock> getSingleLineComments()
      Returns a map of all the single-line comments.
      FileText getText()
      Get the full text of the file.
      private boolean hasIntersectionWithBlockComment​(int startLineNo, int startColNo, int endLineNo, int endColNo)
      Checks if the specified position intersects with a block comment.
      boolean hasIntersectionWithComment​(int startLineNo, int startColNo, int endLineNo, int endColNo)
      Checks if the specified position intersects with a comment.
      private boolean hasIntersectionWithSingleLineComment​(int startLineNo, int startColNo, int endLineNo, int endColNo)
      Checks if the specified position intersects with a single-line comment.
      boolean inPackageInfo()
      Deprecated.
      use CheckUtil.isPackageInfo(String) for the same functionality, or use AbstractCheck.getFilePath() to process your own standards.
      private java.lang.String line​(int lineNo)
      Get a single-line.
      boolean lineIsBlank​(int lineNo)
      Checks if the specified line is blank.
      boolean lineIsComment​(int lineNo)
      Checks if the specified line is a single-line comment without code.
      void reportBlockComment​(int startLineNo, int startColNo, int endLineNo, int endColNo)
      Report the location of a block comment.
      void reportBlockComment​(java.lang.String type, int startLineNo, int startColNo, int endLineNo, int endColNo)
      Report the location of a block comment that can span multiple lines.
      void reportSingleLineComment​(int startLineNo, int startColNo)
      Report the location of a single-line comment.
      void reportSingleLineComment​(java.lang.String type, int startLineNo, int startColNo)
      Report the location of a single-line comment that extends from the given point to the end of the line.
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    • Field Detail

      • MATCH_SINGLELINE_COMMENT

        private static final java.util.regex.Pattern MATCH_SINGLELINE_COMMENT
        Compiled regexp to match a single-line comment line.
      • javadocComments

        private final java.util.Map<java.lang.Integer,​TextBlock> javadocComments
        Map of the Javadoc comments indexed on the last line of the comment. The hack is it assumes that there is only one Javadoc comment per line.
      • cppComments

        private final java.util.Map<java.lang.Integer,​TextBlock> cppComments
        Map of the C++ comments indexed on the first line of the comment.
      • clangComments

        private final java.util.Map<java.lang.Integer,​java.util.List<TextBlock>> clangComments
        Map of the C comments indexed on the first line of the comment to a list of comments on that line.
    • Constructor Detail

      • FileContents

        public FileContents​(FileText text)
        Creates a new FileContents instance.
        Parameters:
        text - the contents of the file
    • Method Detail

      • getText

        public FileText getText()
        Get the full text of the file.
        Returns:
        an object containing the full text of the file
      • getLines

        public java.lang.String[] getLines()
        Gets the lines in the file.
        Returns:
        the lines in the file
      • getLine

        public java.lang.String getLine​(int index)
        Get the line from text of the file.
        Parameters:
        index - index of the line
        Returns:
        line from text of the file
      • getFileName

        public java.lang.String getFileName()
        Gets the name of the file.
        Returns:
        the name of the file
      • reportSingleLineComment

        public void reportSingleLineComment​(java.lang.String type,
                                            int startLineNo,
                                            int startColNo)
        Description copied from interface: CommentListener
        Report the location of a single-line comment that extends from the given point to the end of the line. The type of comment is identified by a String whose value depends on the language being parsed, but would typically be the delimiter for the comment.
        Specified by:
        reportSingleLineComment in interface CommentListener
        Parameters:
        type - an identifier for what type of comment it is.
        startLineNo - the starting line number
        startColNo - the starting column number
      • reportSingleLineComment

        public void reportSingleLineComment​(int startLineNo,
                                            int startColNo)
        Report the location of a single-line comment.
        Parameters:
        startLineNo - the starting line number
        startColNo - the starting column number
      • reportBlockComment

        public void reportBlockComment​(java.lang.String type,
                                       int startLineNo,
                                       int startColNo,
                                       int endLineNo,
                                       int endColNo)
        Description copied from interface: CommentListener
        Report the location of a block comment that can span multiple lines. The type of comment is identified by a String whose value depends on the language being parsed, but would typically be the delimiter for the comment.
        Specified by:
        reportBlockComment in interface CommentListener
        Parameters:
        type - an identifier for what type of comment it is.
        startLineNo - the starting line number
        startColNo - the starting column number
        endLineNo - the ending line number
        endColNo - the ending column number
      • reportBlockComment

        public void reportBlockComment​(int startLineNo,
                                       int startColNo,
                                       int endLineNo,
                                       int endColNo)
        Report the location of a block comment.
        Parameters:
        startLineNo - the starting line number
        startColNo - the starting column number
        endLineNo - the ending line number
        endColNo - the ending column number
      • extractBlockComment

        private java.lang.String[] extractBlockComment​(int startLineNo,
                                                       int startColNo,
                                                       int endLineNo,
                                                       int endColNo)
        Returns the specified block comment as a String array.
        Parameters:
        startLineNo - the starting line number
        startColNo - the starting column number
        endLineNo - the ending line number
        endColNo - the ending column number
        Returns:
        block comment as an array
      • line

        private java.lang.String line​(int lineNo)
        Get a single-line. For internal use only, as getText().get(lineNo) is just as suitable for external use and avoids method duplication.
        Parameters:
        lineNo - the number of the line to get
        Returns:
        the corresponding line, without terminator
        Throws:
        java.lang.IndexOutOfBoundsException - if lineNo is invalid
      • getJavadocBefore

        public TextBlock getJavadocBefore​(int lineNoBefore)
        Returns the Javadoc comment before the specified line. A return value of null means there is no such comment.
        Parameters:
        lineNoBefore - the line number to check before
        Returns:
        the Javadoc comment, or null if none
      • lineIsBlank

        public boolean lineIsBlank​(int lineNo)
        Checks if the specified line is blank.
        Parameters:
        lineNo - the line number to check
        Returns:
        if the specified line consists only of tabs and spaces.
      • lineIsComment

        public boolean lineIsComment​(int lineNo)
        Checks if the specified line is a single-line comment without code.
        Parameters:
        lineNo - the line number to check
        Returns:
        if the specified line consists of only a single-line comment without code.
      • hasIntersectionWithComment

        public boolean hasIntersectionWithComment​(int startLineNo,
                                                  int startColNo,
                                                  int endLineNo,
                                                  int endColNo)
        Checks if the specified position intersects with a comment.
        Parameters:
        startLineNo - the starting line number
        startColNo - the starting column number
        endLineNo - the ending line number
        endColNo - the ending column number
        Returns:
        true if the positions intersects with a comment.
      • hasIntersectionWithBlockComment

        private boolean hasIntersectionWithBlockComment​(int startLineNo,
                                                        int startColNo,
                                                        int endLineNo,
                                                        int endColNo)
        Checks if the specified position intersects with a block comment.
        Parameters:
        startLineNo - the starting line number
        startColNo - the starting column number
        endLineNo - the ending line number
        endColNo - the ending column number
        Returns:
        true if the positions intersects with a block comment.
      • hasIntersectionWithSingleLineComment

        private boolean hasIntersectionWithSingleLineComment​(int startLineNo,
                                                             int startColNo,
                                                             int endLineNo,
                                                             int endColNo)
        Checks if the specified position intersects with a single-line comment.
        Parameters:
        startLineNo - the starting line number
        startColNo - the starting column number
        endLineNo - the ending line number
        endColNo - the ending column number
        Returns:
        true if the positions intersects with a single-line comment.
      • getSingleLineComments

        public java.util.Map<java.lang.Integer,​TextBlockgetSingleLineComments()
        Returns a map of all the single-line comments. The key is a line number, the value is the comment TextBlock at the line.
        Returns:
        the Map of comments
      • getBlockComments

        public java.util.Map<java.lang.Integer,​java.util.List<TextBlock>> getBlockComments()
        Returns a map of all block comments. The key is the line number, the value is a List of block comment TextBlocks that start at that line.
        Returns:
        the map of comments