[Webkit-unassigned] [Bug 27363] Add a parser of patches for linter

bugzilla-daemon at webkit.org bugzilla-daemon at webkit.org
Fri Jul 17 03:23:51 PDT 2009


https://bugs.webkit.org/show_bug.cgi?id=27363


David Levin <levin at chromium.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
  Attachment #32922|review?                     |review-
               Flag|                            |




--- Comment #7 from David Levin <levin at chromium.org>  2009-07-17 03:23:51 PDT ---
(From update of attachment 32922)
Nice to see this patch.  Just a few things to address.


> diff --git a/WebKitTools/ChangeLog b/WebKitTools/ChangeLog
...
> +        Now, the parser doesn't have full information of patches.
> +        It only knows the line number and line contents of each lines in
> +        chunks of a patch.  In case the line is newly added or deleted, it
> +        sets zero as the line number.

In isolation from the code, this comment is a bit confusing.  I think it is
sufficient to say something like this here:

Adds a simple parser for unified diff format.

> diff --git a/WebKitTools/Scripts/modules/diff_parser.py b/WebKitTools/Scripts/modules/diff_parser.py
...
> +def match(pattern, string):
> +    """Matches the string with the pattern, caching the compiled regexp."""
> +    # The regexp compilation caching is inlined in both match and search for
> +    # performance reasons; factoring it out into a separate function turns out
> +    # to be noticeably expensive.

I'd remove this comment as there is no search function.  (The comment is a
carry over from the cpplint.py file where there is.)

> +# FIXME: We may need more states if we want to check the integrity of input patches.

I think it is fine to omit this fixme.  If someone wants to check integrity,
they can do the appropriate changes.

> +class DiffFile:
> +    """Hold information of a file in a patch.

Consider: Contains the information for one file in a patch.

> +    The field "lines" is a list which contains tuples which represent

Consider: The field "lines" is a list which contains tuples in this format:

> +    # FIXME: We only have information of lines in chunks. Need more info?

I think it is fine to omit this FIXME.  If someone wants more information, they
can enhance this code.

> +    def add_new_line(self, line_number, line):
> +        """Adds a newly added line."""

I would just omit this doc string as it doesn't add any information.

> +    def add_old_line(self, line_number, line):

add_deleted_line seems like a better name.

> +        """Adds a deleted line."""

Remove this doc string.

> +    def add_unchanged_line(self, old_line_number, new_line_number, line):
> +        """Adds an unchanged line."""

Remove this doc string.

> +    def __init__(self, diff_input):
> +        """Parses a diff.
> +
> +        Args:
> +          diff_input: An iteratable object.

An iterable object

> +                elif line == '\\ No newline at end of file\n':
> +                    # Nothing to do.  We may still have some added lines.
> +                    # FIXME: Check if the following lines only contain added lines?

I don't understand this FIXME. (I guess I really don't understand how there are
added lines after the "no newline at end of line" in the diff.)

> +            # The following kinds of lines will be ignored silently:
> +            #
> +            # - Lines git-diff-tree produces before filename
> +            #   declaration, which contains a hash of a patch.
> +            # - '='*67 lines between filename declaration and file
> +            #   revision declaration.
> +            # - Lines for revision declaration.
> +            #
> +            # FIXME: Need these info?

I think it is fine to omit this FIXME and perhaps the whole note.  It seems
clear that this information isn't used.


> diff --git a/WebKitTools/Scripts/modules/diff_parser_unittest.py b/WebKitTools/Scripts/modules/diff_parser_unittest.py
...
> +    def test_diff_parser(self):
...
> +        # The first file looks OK, let's check the next, more complicated file.

Add a period here:
        # The first file looks OK. Let's check the next, more complicated file.

> +        # Look through the last chunk, which contains both add/delete.
Consider this wording:
        # Look through the last chunk, which contains both add's and delete's.

-- 
Configure bugmail: https://bugs.webkit.org/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are the assignee for the bug.



More information about the webkit-unassigned mailing list