[ 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)