adoptium/temurin-build

Revisit and relax some of the linter checks that seem excessively strict

Closed this issue · 11 comments

The current linter checks contain some checks that seem excessively strict (including number of characters per line that include whitespace), etc.

This issue is to review what checks the linter is doing and potentially update them to be more realistic and reasonable.

Other Linter checks proposed for removal:

  • The check that forces a comment before every variable creation.
  • The check that insists every number is a magic number, and shouldn't be used.
  • The check for a javadoc comment before every variation within an enum declaration.
  • The check for absence of TODO comments (or some consensus on the creation of "todo" comments).
sxa commented

Linter was enhanced in #2513. Quite a few issues with it were resolved in #2542 but it sounds like there is more work to be done to make it pass across all our scripts.

I think it's only the Java files that are being aggressively linted as the smoke tests were only a few days old at the time of 2513 being merged IIRC, so they weren’t noticed to be fixed in 2542. I'll go over it again and see if I can clean up the remaining glaring issues

I have started with a PR that sets VALIDATE_ALL_CODEBASE to true so that the linter will scan the entire repo, then will eliminate some of the checks that seem non-blocking or strict (e.g. that line length one can go)

All the issues with files that are not .java and .pl have been resolved (check the PR commit comments for the reasons of each one). Now to evaluate the java rules. The ones that I am unsure about ignoring or fixing are:

JAVA

  • There is a tool that hasn't been updated in over 3 years, does this actually get used? If not, we can probably consider removing it as it's producing a lot of the errors. @johnoliver any ideas?
  • Missing Javadoc, I assume this refers to what @adamfarley mentioned before about variable creation Nope that's a separate rule that I've suppressed. This can probably be removed since it is separate to the one for functions (which imo is actually useful)
Error:  /github/workspace/test/functional/buildAndPackage/src/net/adoptopenjdk/test/CudaEnabledTest.java:19:5: Missing a Javadoc comment. [JavadocVariable]
  • Designed for extension subclasses, not sure on this one, would there be a problem making the test classes final?
Error:  /github/workspace/test/functional/buildAndPackage/src/net/adoptopenjdk/test/CudaEnabledTest.java:21:5: Class 'CudaEnabledTest' looks like designed for extension (can be subclassed), but the method 'getJDKVersion' does not have javadoc that explains how to do that safely. If class is not designed for extension consider making the class 'CudaEnabledTest' final or making the method 'getJDKVersion' static/final/abstract/empty, or adding allowed annotation for the method. [DesignForExtension]

The remaining issues are probably resolvable by either being ignored or fixed in some instances where the check errors are genuine and opportunities for optimising the tests.
@sophia-guo @smlambert @adamfarley Can I get some opinions on the above?

PERL

Lots of errors here for a single script, some worse than others. I'm not familiar with Perl so if anyone can offer any advice on these please do let me know. @sxa @aahlenst Not to point fingers, but can you offer any insight on these and if they need fixing?

2021-04-30 13:57:47 [INFO]   File:[/github/workspace/security/mk-ca-bundle.pl]
2021-04-30 13:57:48 [ERROR]   Found errors in [perl] linter!
2021-04-30 13:57:48 [ERROR]   Error code: 2. Command output:
------
Expression form of "eval" at line 43, column 1.  See page 161 of PBP.  (Severity: 5)
Expression form of "eval" at line 46, column 3.  See page 161 of PBP.  (Severity: 5)
Expression form of "eval" at line 48, column 1.  See page 161 of PBP.  (Severity: 5)
Subroutine prototypes used at line 201, column 1.  See page 194 of PBP.  (Severity: 5)
Subroutine prototypes used at line 207, column 1.  See page 194 of PBP.  (Severity: 5)
Subroutine prototypes used at line 215, column 1.  See page 194 of PBP.  (Severity: 5)
Don't modify $_ in list functions at line 220, column 16.  See page 114 of PBP.  (Severity: 5)
Bareword file handle opened at line 243, column 5.  See pages 202,204 of PBP.  (Severity: 5)
Two-argument "open" used at line 243, column 5.  See page 207 of PBP.  (Severity: 5)
Bareword file handle opened at line 258, column 3.  See pages 202,204 of PBP.  (Severity: 5)
Two-argument "open" used at line 258, column 3.  See page 207 of PBP.  (Severity: 5)
Subroutine prototypes used at line 281, column 1.  See page 194 of PBP.  (Severity: 5)
Bareword file handle opened at line 393, column 5.  See pages 202,204 of PBP.  (Severity: 5)
Two-argument "open" used at line 393, column 5.  See page 207 of PBP.  (Severity: 5)
Bareword file handle opened at line 395, column 5.  See pages 202,204 of PBP.  (Severity: 5)
Two-argument "open" used at line 395, column 5.  See page 207 of PBP.  (Severity: 5)
Bareword file handle opened at line 428, column 1.  See pages 202,204 of PBP.  (Severity: 5)
Two-argument "open" used at line 428, column 1.  See page 207 of PBP.  (Severity: 5)
Bareword file handle opened at line 565, column 11.  See pages 202,204 of PBP.  (Severity: 5)
Two-argument "open" used at line 565, column 11.  See page 207 of PBP.  (Severity: 5)
Bareword file handle opened at line 569, column 13.  See pages 202,204 of PBP.  (Severity: 5)
Two-argument "open" used at line 569, column 13.  See page 207 of PBP.  (Severity: 5)
Bareword file handle opened at line 577, column 9.  See pages 202,204 of PBP.  (Severity: 5)
Two-argument "open" used at line 577, column 9.  See page 207 of PBP.  (Severity: 5)
Bareword file handle opened at line 581, column 11.  See pages 202,204 of PBP.  (Severity: 5)
Two-argument "open" used at line 581, column 11.  See page 207 of PBP.  (Severity: 5)
sxa commented

Not to point fingers, but can you offer any insight on these and if they need fixing?

I'm off on vacation for the next 1½ weeks so I can't at the moment, although in terms of finger pointing you can see from the header that the file is, if not wholly copied from, slightly modified from the curl one which looks like it was probably sourced from https://github.com/curl/curl/blob/master/lib/mk-ca-bundle.pl

although in terms of finger pointing

I didn't mean to imply that either of you caused it 😆 I meant that you are the two committers to that file, not that you actually caused the problems. In essence, you might know what the linter checks actually mean more than me 🙂

There is a tool that hasn't been updated in over 3 years, does this actually get used? If not, we can probably consider removing it as it's producing a lot of the errors. @johnoliver any ideas?

Thread requesting permission to remove the tool

Perl

Lots of errors here for a single script, some worse than others. I'm not familiar with Perl so if anyone can offer any advice on these please do let me know. @sxa @aahlenst Not to point fingers, but can you offer any insight on these and if they need fixing?

Spawned #2612 to address the perl issues. For now, I'll just exclude it from the linter

All linting issues resolved except for the previously mentioned mercurial tool (log below). Seeing as I am proposing to remove that, I'm not going to look into the failures here just yet

2021-05-03 19:19:09 [INFO]   File:[/github/workspace/mercurial-tags/java-tool/MercurialTracker.java]
2021-05-03 19:19:10 [ERROR]   Found errors in [checkstyle] linter!
2021-05-03 19:19:10 [ERROR]   Error code: 128. Command output:
------
Starting audit...
Error:  /github/workspace/mercurial-tags/java-tool/MercurialTracker.java:1: Missing package-info.java file. [JavadocPackage]
Error:  /github/workspace/mercurial-tags/java-tool/MercurialTracker.java:31:1: Utility classes should not have a public or default constructor. [HideUtilityClassConstructor]
Error:  /github/workspace/mercurial-tags/java-tool/MercurialTracker.java:35:24: Name 'MAX_BUFFER_LENGTH' must match pattern '^[a-z][a-zA-Z0-9]*$'. [StaticVariableName]
Error:  /github/workspace/mercurial-tags/java-tool/MercurialTracker.java:47:5: Missing a Javadoc comment. [MissingJavadocMethod]
Error:  /github/workspace/mercurial-tags/java-tool/MercurialTracker.java:51:33: Name 'switch_buffer' must match pattern '^[A-Z][A-Z0-9]*(_[A-Z0-9]+)*$'. [ConstantName]
Error:  /github/workspace/mercurial-tags/java-tool/MercurialTracker.java:52:33: Name 'switch_paths' must match pattern '^[A-Z][A-Z0-9]*(_[A-Z0-9]+)*$'. [ConstantName]
Error:  /github/workspace/mercurial-tags/java-tool/MercurialTracker.java:53:33: Name 'switch_branches' must match pattern '^[A-Z][A-Z0-9]*(_[A-Z0-9]+)*$'. [ConstantName]
Error:  /github/workspace/mercurial-tags/java-tool/MercurialTracker.java:54:33: Name 'switch_verbose' must match pattern '^[A-Z][A-Z0-9]*(_[A-Z0-9]+)*$'. [ConstantName]
Error:  /github/workspace/mercurial-tags/java-tool/MercurialTracker.java:55:33: Name 'switch_output' must match pattern '^[A-Z][A-Z0-9]*(_[A-Z0-9]+)*$'. [ConstantName]
Error:  /github/workspace/mercurial-tags/java-tool/MercurialTracker.java:56:33: Name 'switch_tiptags' must match pattern '^[A-Z][A-Z0-9]*(_[A-Z0-9]+)*$'. [ConstantName]
Error:  /github/workspace/mercurial-tags/java-tool/MercurialTracker.java:57:33: Name 'switch_enforceSingle' must match pattern '^[A-Z][A-Z0-9]*(_[A-Z0-9]+)*$'. [ConstantName]
Error:  /github/workspace/mercurial-tags/java-tool/MercurialTracker.java:58:33: Name 'switch_log' must match pattern '^[A-Z][A-Z0-9]*(_[A-Z0-9]+)*$'. [ConstantName]
Error:  /github/workspace/mercurial-tags/java-tool/MercurialTracker.java:70:5: Method main length is 225 lines (max allowed is 150). [MethodLength]
Error:  /github/workspace/mercurial-tags/java-tool/MercurialTracker.java:70:29: Parameter args should be final. [FinalParameters]
Error:  /github/workspace/mercurial-tags/java-tool/MercurialTracker.java:190:36: Parameter o1 should be final. [FinalParameters]
Error:  /github/workspace/mercurial-tags/java-tool/MercurialTracker.java:190:52: Parameter o2 should be final. [FinalParameters]
Error:  /github/workspace/mercurial-tags/java-tool/MercurialTracker.java:296:40: Parameter topHg should be final. [FinalParameters]
Error:  /github/workspace/mercurial-tags/java-tool/MercurialTracker.java:299:35: Parameter pathname should be final. [FinalParameters]
Error:  /github/workspace/mercurial-tags/java-tool/MercurialTracker.java:306:54: Parameter pathsToTags should be final. [FinalParameters]
Error:  /github/workspace/mercurial-tags/java-tool/MercurialTracker.java:313:32: Parameter o1 should be final. [FinalParameters]
Error:  /github/workspace/mercurial-tags/java-tool/MercurialTracker.java:313:44: Parameter o2 should be final. [FinalParameters]
Error:  /github/workspace/mercurial-tags/java-tool/MercurialTracker.java:330:41: Parameter followingMerge should be final. [FinalParameters]
Error:  /github/workspace/mercurial-tags/java-tool/MercurialTracker.java:330:65: Parameter currentItem should be final. [FinalParameters]
Error:  /github/workspace/mercurial-tags/java-tool/MercurialTracker.java:367:44: Parameter tags should be final. [FinalParameters]
Error:  /github/workspace/mercurial-tags/java-tool/MercurialTracker.java:380: @return tag should be present and have description. [JavadocMethod]
Error:  /github/workspace/mercurial-tags/java-tool/MercurialTracker.java:380:47: Parameter logs should be final. [FinalParameters]
Error:  /github/workspace/mercurial-tags/java-tool/MercurialTracker.java:393:46: Parameter log should be final. [FinalParameters]
Error:  /github/workspace/mercurial-tags/java-tool/MercurialTracker.java:410:9: Redundant 'public' modifier. [RedundantModifier]
Error:  /github/workspace/mercurial-tags/java-tool/MercurialTracker.java:410:27: Parameter arg should be final. [FinalParameters]
Error:  /github/workspace/mercurial-tags/java-tool/MercurialTracker.java:423:56: Parameter os should be final. [FinalParameters]
Error:  /github/workspace/mercurial-tags/java-tool/MercurialTracker.java:485:42: Parameter item should be final. [FinalParameters]
Error:  /github/workspace/mercurial-tags/java-tool/MercurialTracker.java:485:56: Parameter targets should be final. [FinalParameters]
Error:  /github/workspace/mercurial-tags/java-tool/MercurialTracker.java:498: First sentence should end with a period. [JavadocStyle]
Error:  /github/workspace/mercurial-tags/java-tool/MercurialTracker.java:501:12: Unused @param tag for 'nodeBufferWithpathBuffers'. [JavadocMethod]
Error:  /github/workspace/mercurial-tags/java-tool/MercurialTracker.java:506: @return tag should be present and have description. [JavadocMethod]
Error:  /github/workspace/mercurial-tags/java-tool/MercurialTracker.java:506:50: Parameter item should be final. [FinalParameters]
Error:  /github/workspace/mercurial-tags/java-tool/MercurialTracker.java:506:58: Expected @param tag for 'item'. [JavadocMethod]
Error:  /github/workspace/mercurial-tags/java-tool/MercurialTracker.java:506:64: Parameter pathBuffer should be final. [FinalParameters]
Error:  /github/workspace/mercurial-tags/java-tool/MercurialTracker.java:506:78: Expected @param tag for 'pathBuffer'. [JavadocMethod]
Error:  /github/workspace/mercurial-tags/java-tool/MercurialTracker.java:506:90: Parameter targets should be final. [FinalParameters]
Error:  /github/workspace/mercurial-tags/java-tool/MercurialTracker.java:506:109: Expected @param tag for 'targets'. [JavadocMethod]
Error:  /github/workspace/mercurial-tags/java-tool/MercurialTracker.java:506:118: Parameter usedMaxBufferLength should be final. [FinalParameters]
Error:  /github/workspace/mercurial-tags/java-tool/MercurialTracker.java:506:122: Expected @param tag for 'usedMaxBufferLength'. [JavadocMethod]
Error:  /github/workspace/mercurial-tags/java-tool/MercurialTracker.java:537:50: Parameter unreachableTags should be final. [FinalParameters]
Error:  /github/workspace/mercurial-tags/java-tool/MercurialTracker.java:550:35: Parameter unreachableTag should be final. [FinalParameters]
Error:  /github/workspace/mercurial-tags/java-tool/MercurialTracker.java:559:35: Name 'year' must match pattern '^[A-Z][A-Z0-9]*(_[A-Z0-9]+)*$'. [ConstantName]
Error:  /github/workspace/mercurial-tags/java-tool/MercurialTracker.java:559:42: Should use uppercase 'L'. [UpperEll]
Error:  /github/workspace/mercurial-tags/java-tool/MercurialTracker.java:559:49: Should use uppercase 'L'. [UpperEll]
Error:  /github/workspace/mercurial-tags/java-tool/MercurialTracker.java:559:55: Should use uppercase 'L'. [UpperEll]
Error:  /github/workspace/mercurial-tags/java-tool/MercurialTracker.java:559:61: Should use uppercase 'L'. [UpperEll]
Error:  /github/workspace/mercurial-tags/java-tool/MercurialTracker.java:559:67: Should use uppercase 'L'. [UpperEll]
Error:  /github/workspace/mercurial-tags/java-tool/MercurialTracker.java:583:9: Redundant 'public' modifier. [RedundantModifier]
Error:  /github/workspace/mercurial-tags/java-tool/MercurialTracker.java:583:28: Parameter s should be final. [FinalParameters]
Error:  /github/workspace/mercurial-tags/java-tool/MercurialTracker.java:596:31: Parameter obj should be final. [FinalParameters]
Error:  /github/workspace/mercurial-tags/java-tool/MercurialTracker.java:629:9: Redundant 'public' modifier. [RedundantModifier]
Error:  /github/workspace/mercurial-tags/java-tool/MercurialTracker.java:638:33: Parameter s should be final. [FinalParameters]
Error:  /github/workspace/mercurial-tags/java-tool/MercurialTracker.java:694:9: Redundant 'public' modifier. [RedundantModifier]
Error:  /github/workspace/mercurial-tags/java-tool/MercurialTracker.java:698:5: Class RepoCommitPathsSearch should be declared as final. [FinalClass]
Error:  /github/workspace/mercurial-tags/java-tool/MercurialTracker.java:703:23: Variable 'reachableTipLines' must be private and have accessor methods. [VisibilityModifier]
Error:  /github/workspace/mercurial-tags/java-tool/MercurialTracker.java:704:23: Variable 'unreachableTipLines' must be private and have accessor methods. [VisibilityModifier]
Error:  /github/workspace/mercurial-tags/java-tool/MercurialTracker.java:705:29: Variable 'reachablePathsResults' must be private and have accessor methods. [VisibilityModifier]
Error:  /github/workspace/mercurial-tags/java-tool/MercurialTracker.java:706:29: Variable 'unreachablePathsResults' must be private and have accessor methods. [VisibilityModifier]
Error:  /github/workspace/mercurial-tags/java-tool/MercurialTracker.java:707:23: Variable 'reachableTags' must be private and have accessor methods. [VisibilityModifier]
Error:  /github/workspace/mercurial-tags/java-tool/MercurialTracker.java:709:26: Variable 'pathsToTags' must be private and have accessor methods. [VisibilityModifier]
Error:  /github/workspace/mercurial-tags/java-tool/MercurialTracker.java:710:26: Variable 'pathsToUnreachableTags' must be private and have accessor methods. [VisibilityModifier]
Error:  /github/workspace/mercurial-tags/java-tool/MercurialTracker.java:717:39: Parameter mainDir should be final. [FinalParameters]
Error:  /github/workspace/mercurial-tags/java-tool/MercurialTracker.java:729:39: Parameter mainDir should be final. [FinalParameters]
Error:  /github/workspace/mercurial-tags/java-tool/MercurialTracker.java:741: First sentence should end with a period. [JavadocStyle]
Error:  /github/workspace/mercurial-tags/java-tool/MercurialTracker.java:794:44: Parameter pathsToTags should be final. [FinalParameters]
Error:  /github/workspace/mercurial-tags/java-tool/MercurialTracker.java:804:36: Parameter fromRepo should be final. [FinalParameters]
Error:  /github/workspace/mercurial-tags/java-tool/MercurialTracker.java:856:53: Parameter pathsToTags should be final. [FinalParameters]
Error:  /github/workspace/mercurial-tags/java-tool/MercurialTracker.java:856:70: 'pathsToTags' hides a field. [HiddenField]
Error:  /github/workspace/mercurial-tags/java-tool/MercurialTracker.java:856:83: Parameter tipLines should be final. [FinalParameters]
Error:  /github/workspace/mercurial-tags/java-tool/MercurialTracker.java:910:5: Class PathInRepo should be declared as final. [FinalClass]
Error:  /github/workspace/mercurial-tags/java-tool/MercurialTracker.java:915:28: Parameter pathBuffer should be final. [FinalParameters]
Error:  /github/workspace/mercurial-tags/java-tool/MercurialTracker.java:915:54: Parameter b should be final. [FinalParameters]
Error:  /github/workspace/mercurial-tags/java-tool/MercurialTracker.java:929:29: Parameter j should be final. [FinalParameters]
Error:  /github/workspace/mercurial-tags/java-tool/MercurialTracker.java:933:40: Parameter checkoutIndex should be final. [FinalParameters]
Error:  /github/workspace/mercurial-tags/java-tool/MercurialTracker.java:933:59: Parameter repo should be final. [FinalParameters]
Error:  /github/workspace/mercurial-tags/java-tool/MercurialTracker.java:933:72: Parameter subrepo should be final. [FinalParameters]
Error:  /github/workspace/mercurial-tags/java-tool/MercurialTracker.java:933:88: Parameter mergeOrTip should be final. [FinalParameters]
Error:  /github/workspace/mercurial-tags/java-tool/MercurialTracker.java:949:47: Name 'isoOutput' must match pattern '^[A-Z][A-Z0-9]*(_[A-Z0-9]+)*$'. [ConstantName]
Error:  /github/workspace/mercurial-tags/java-tool/MercurialTracker.java:952:9: Redundant 'public' modifier. [RedundantModifier]
Error:  /github/workspace/mercurial-tags/java-tool/MercurialTracker.java:952:30: Parameter tag should be final. [FinalParameters]
Error:  /github/workspace/mercurial-tags/java-tool/MercurialTracker.java:952:37: 'tag' hides a field. [HiddenField]
Error:  /github/workspace/mercurial-tags/java-tool/MercurialTracker.java:952:42: Parameter checkout should be final. [FinalParameters]
Error:  /github/workspace/mercurial-tags/java-tool/MercurialTracker.java:952:54: 'checkout' hides a field. [HiddenField]
Error:  /github/workspace/mercurial-tags/java-tool/MercurialTracker.java:952:64: Parameter repo should be final. [FinalParameters]
Error:  /github/workspace/mercurial-tags/java-tool/MercurialTracker.java:952:71: 'repo' hides a field. [HiddenField]
Error:  /github/workspace/mercurial-tags/java-tool/MercurialTracker.java:952:77: Parameter subrepo should be final. [FinalParameters]
Error:  /github/workspace/mercurial-tags/java-tool/MercurialTracker.java:952:84: 'subrepo' hides a field. [HiddenField]
Error:  /github/workspace/mercurial-tags/java-tool/MercurialTracker.java:952:93: Parameter tipLine should be final. [FinalParameters]
Error:  /github/workspace/mercurial-tags/java-tool/MercurialTracker.java:952:101: 'tipLine' hides a field. [HiddenField]
Error:  /github/workspace/mercurial-tags/java-tool/MercurialTracker.java:952:110: Parameter chst should be final. [FinalParameters]
Error:  /github/workspace/mercurial-tags/java-tool/MercurialTracker.java:952:120: Parameter mergeDate should be final. [FinalParameters]
Error:  /github/workspace/mercurial-tags/java-tool/MercurialTracker.java:952:125: 'mergeDate' hides a field. [HiddenField]
Error:  /github/workspace/mercurial-tags/java-tool/MercurialTracker.java:964:31: Parameter obj should be final. [FinalParameters]
Error:  /github/workspace/mercurial-tags/java-tool/MercurialTracker.java:997:30: Parameter o should be final. [FinalParameters]
Error:  /github/workspace/mercurial-tags/java-tool/MercurialTracker.java:1016:32: Parameter o1 should be final. [FinalParameters]
Error:  /github/workspace/mercurial-tags/java-tool/MercurialTracker.java:1016:43: Parameter o2 should be final. [FinalParameters]
Error:  /github/workspace/mercurial-tags/java-tool/MercurialTracker.java:1041:31: Parameter s should be final. [FinalParameters]
Error:  /github/workspace/mercurial-tags/java-tool/MercurialTracker.java:1055:36: Parameter s should be final. [FinalParameters]
Error:  /github/workspace/mercurial-tags/java-tool/MercurialTracker.java:1059:29: Parameter s should be final. [FinalParameters]
Error:  /github/workspace/mercurial-tags/java-tool/MercurialTracker.java:1072:37: Parameter s should be final. [FinalParameters]
Error:  /github/workspace/mercurial-tags/java-tool/MercurialTracker.java:1155:9: Redundant 'public' modifier. [RedundantModifier]
Error:  /github/workspace/mercurial-tags/java-tool/MercurialTracker.java:1155:30: Parameter repo should be final. [FinalParameters]
Error:  /github/workspace/mercurial-tags/java-tool/MercurialTracker.java:1159:36: Parameter sortedPossiblePoints should be final. [FinalParameters]
Error:  /github/workspace/mercurial-tags/java-tool/MercurialTracker.java:1190:36: Parameter o1 should be final. [FinalParameters]
Error:  /github/workspace/mercurial-tags/java-tool/MercurialTracker.java:1190:67: Parameter o2 should be final. [FinalParameters]
Error:  /github/workspace/mercurial-tags/java-tool/MercurialTracker.java:1200:50: Parameter get should be final. [FinalParameters]
Error:  /github/workspace/mercurial-tags/java-tool/MercurialTracker.java:1208:50: Parameter tag should be final. [FinalParameters]
Error:  /github/workspace/mercurial-tags/java-tool/MercurialTracker.java:1208:62: Parameter changesets should be final. [FinalParameters]
Error:  /github/workspace/mercurial-tags/java-tool/MercurialTracker.java:1212:58: Parameter tag should be final. [FinalParameters]
Error:  /github/workspace/mercurial-tags/java-tool/MercurialTracker.java:1212:70: Parameter changesets should be final. [FinalParameters]
Error:  /github/workspace/mercurial-tags/java-tool/MercurialTracker.java:1216:36: Parameter tag should be final. [FinalParameters]
Error:  /github/workspace/mercurial-tags/java-tool/MercurialTracker.java:1230:9: Redundant 'public' modifier. [RedundantModifier]
Error:  /github/workspace/mercurial-tags/java-tool/MercurialTracker.java:1230:28: Parameter tag should be final. [FinalParameters]
Error:  /github/workspace/mercurial-tags/java-tool/MercurialTracker.java:1230:35: 'tag' hides a field. [HiddenField]
Error:  /github/workspace/mercurial-tags/java-tool/MercurialTracker.java:1230:40: Parameter date should be final. [FinalParameters]
Error:  /github/workspace/mercurial-tags/java-tool/MercurialTracker.java:1230:45: 'date' hides a field. [HiddenField]
Error:  /github/workspace/mercurial-tags/java-tool/MercurialTracker.java:1235:29: Parameter item should be final. [FinalParameters]
Error:  /github/workspace/mercurial-tags/java-tool/MercurialTracker.java:1246:31: Parameter obj should be final. [FinalParameters]
Error:  /github/workspace/mercurial-tags/java-tool/MercurialTracker.java:1264:30: Parameter o should be final. [FinalParameters]
Error:  /github/workspace/mercurial-tags/java-tool/MercurialTracker.java:1277:36: Parameter r should be final. [FinalParameters]
Error:  /github/workspace/mercurial-tags/java-tool/MercurialTracker.java:1277:57: Parameter candidate should be final. [FinalParameters]
Error:  /github/workspace/mercurial-tags/java-tool/MercurialTracker.java:1292:39: Parameter destination should be final. [FinalParameters]
Error:  /github/workspace/mercurial-tags/java-tool/MercurialTracker.java:1292:70: Parameter source should be final. [FinalParameters]
Error:  /github/workspace/mercurial-tags/java-tool/MercurialTracker.java:1299:41: Parameter o1 should be final. [FinalParameters]
Audit done.
Checkstyle ends with 128 errors.

Mercurial compile tool has been deleted, PR is now ready to review