[ 
https://issues.apache.org/jira/browse/HADOOP-12301?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Kengo Seki updated HADOOP-12301:
--------------------------------
    Attachment: HADOOP-12301.HADOOP-12111.00.patch

-00:

* Change rubocop formatter from "clang" to "emacs". The latter outputs only one 
line for one issue, so we can simply count lines as the number of issues. To be 
safe, I left the check for the number of fields, in case that the message part 
in a line contains a newline.

* Change pylint.sh to count only lines matched with {code}/^.*:.*: \[.*\] 
/{code} (e.g., "a.py:1: \[E0001(syntax-error), ] invalid syntax") to skip 
unnecessary lines. This pattern is compatible with a very early (2006) version 
of the --parseable option. 
https://bitbucket.org/logilab/pylint/commits/79b31c260ad15738a52b504b0ae29b52abf6367b?at=before-astroid#chg-reporters/text.py

I confirmed they report correct numbers of issues using the above example 
patches.

Rubocop:

{code}
| Vote |       Subsystem |  Runtime   | Comment
============================================================================
|  -1  |        rubocop  |  0m 02s    | The applied patch generated 2 new 
|      |                 |            | rubocop issues (total was 77, now 79).

|| Subsystem || Report/Notes ||
============================================================================
| rubocop | v0.32.1 |
| rubocop | /private/tmp/test-patch-hbase/83220/diff-patch-rubocop.txt |

[sekikn@mobile hadoop]$ cat 
/private/tmp/test-patch-hbase/83220/diff-patch-rubocop.txt
/Users/sekikn/hbase/bin/draining_servers.rb:165:4: C: Do not use `::` for 
method calls.
/Users/sekikn/hbase/bin/draining_servers.rb:165:9: C: Do not use `::` for 
method calls.
[sekikn@mobile hadoop]$ 
{code}

Pylint:

{code}
| Vote |      Subsystem |  Runtime   | Comment
============================================================================
|  -1  |        pylint  |  0m 05s    | The applied patch generated 6 new pylint 
|      |                |            | issues (total was 437, now 443).


|| Subsystem || Report/Notes ||
============================================================================
| pylint | v1.4.4 |
| pylint | /private/tmp/test-patch-hadoop/61453/diff-patch-pylint.txt |


[sekikn@mobile hadoop]$ cat 
/private/tmp/test-patch-hadoop/61453/diff-patch-pylint.txt
dev-support/releasedocmaker.py:584: [W0311(bad-indentation), ] Bad indentation. 
Found 4 spaces, expected 2
dev-support/releasedocmaker.py:584: [C0326(bad-whitespace), ] No space allowed 
after bracket
    ( ( ) )
    ^
dev-support/releasedocmaker.py:584: [C0326(bad-whitespace), ] No space allowed 
after bracket
    ( ( ) )
      ^
dev-support/releasedocmaker.py:584: [C0326(bad-whitespace), ] No space allowed 
before bracket
    ( ( ) )
        ^
dev-support/releasedocmaker.py:584: [C0326(bad-whitespace), ] No space allowed 
before bracket
    ( ( ) )
          ^
dev-support/releasedocmaker.py:584: [W0104(pointless-statement), ] Statement 
seems to have no effect
[sekikn@mobile hadoop]$ 
{code}

> Fix some test-patch plugins to count the diff lines correctly
> -------------------------------------------------------------
>
>                 Key: HADOOP-12301
>                 URL: https://issues.apache.org/jira/browse/HADOOP-12301
>             Project: Hadoop Common
>          Issue Type: Sub-task
>          Components: yetus
>    Affects Versions: HADOOP-12111
>            Reporter: Kengo Seki
>         Attachments: HADOOP-12301.HADOOP-12111.00.patch
>
>
> 1. rubocop.sh counts only lines which have at least five fields separated by 
> a colon:
> {code}
>   calcdiffs "${PATCH_DIR}/branch-rubocop-result.txt" 
> "${PATCH_DIR}/patch-rubocop-result.txt" > 
> "${PATCH_DIR}/diff-patch-rubocop.txt"
>   diffPostpatch=$(${AWK} -F: 'BEGIN {sum=0} 4<NF {sum+=1} END {print sum}' 
> "${PATCH_DIR}/diff-patch-rubocop.txt")
>   if [[ ${diffPostpatch} -gt 0 ]] ; then
>     # shellcheck disable=SC2016
>     numPrepatch=$(${AWK} -F: 'BEGIN {sum=0} 4<NF {sum+=1} END {print sum}' 
> "${PATCH_DIR}/branch-rubocop-result.txt")
>     # shellcheck disable=SC2016
>     numPostpatch=$(${AWK} -F: 'BEGIN {sum=0} 4<NF {sum+=1} END {print sum}' 
> "${PATCH_DIR}/patch-rubocop-result.txt")
> {code}
> This is because the diff result can contain multiple lines for one issue. For 
> example:
> {code}
> [sekikn@mobile hadoop]$ cat 
> /private/tmp/test-patch-hbase/25821/diff-patch-rubocop.txt
> bin/draining_servers.rb:165:1: C: Do not introduce global variables.
> $foo
> ^^^^
> {code}
> Checking the number of fields is intended to skip the second and third lines 
> in the above diff file. But four or more colons can appear in the source code 
> itself, for example:
> {code}
> | Vote |       Subsystem |  Runtime   | Comment
> ============================================================================
> |  -1  |        rubocop  |  0m 02s    | The applied patch generated 4 new 
> |      |                 |            | rubocop issues (total was 77, now 81).
> || Subsystem || Report/Notes ||
> ============================================================================
> | rubocop | v0.32.1 |
> | rubocop | /private/tmp/test-patch-hbase/5632/diff-patch-rubocop.txt |
> [sekikn@mobile hadoop]$ cat 
> /private/tmp/test-patch-hbase/5632/diff-patch-rubocop.txt
> bin/draining_servers.rb:165:4: C: Do not use :: for method calls.
> foo::bar::baz
>    ^^
> bin/draining_servers.rb:165:9: C: Do not use :: for method calls.
> foo::bar::baz
>         ^^
> [sekikn@mobile hadoop]$ 
> {code}
> In this case, new rubocop issues should be 2, but counted as 4 incorrectly. 
> More reliable way to count is needed.
> 2. pylint.sh has the same problem. In addition, I removed awk's '-F:' option 
> by mistake on HADOOP-12286. It can report a wrong number for now.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to