You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@hop.apache.org by "Adalennis (via GitHub)" <gi...@apache.org> on 2026/10/21 12:17:57 UTC

[I] [Bug]: Lint: pre-commit hook, relative paths, --fail-on and other issues (hop)

Adalennis opened a new issue, #9071:
URL: https://github.com/apache/hop/issues/9071

   ### Apache Hop version?
   
   2.20.0-SNAPSHOT
   
   ### Java version?
   
   Java 21
   
   ### Operating system
   
   macOS
   
   ### What happened?
   
   - The pre-commit hook doesn't lint what is being committed. It lints the files on disk rather than the staged versions, so a password that is staged and then removed only on disk is committed unchecked. It also selects files with --diff-filter=ACM, so a pipeline renamed with git mv and given a password in the same commit is never linted, while the same change without the rename is blocked by SEC-002. Expected: lint the staged content (git show :<path>) and include renamed files (ACMR).
   - hop lint resolves relative paths against the Hop installation. Run from a project folder, hop lint . lints the Hop installation, hop lint naming.hpl reports "Target does not exist", and -o, -c, --baseline and --write-baseline read or write inside the installation. Only hop lint with no target uses the current folder, so the documented hop lint --output lint.sarif . lints the wrong files. Expected: resolve relative paths against the folder the command was run from (hop.origin.dir).
   - --fail-on silently treats INFO and invalid values as ERROR. --fail-on INFO and a typo such as --fail-on WARNNG both pass with exit 0 on a project with 11 warnings and 1 info, without a warning. The Run Linter action's Fail on offers the same three values. Expected: support INFO, as -s does, and reject unknown values.
   - Invalid rule values are accepted and the rule silently never works. A non-numeric value for a numeric condition ("abc", "${MAXT}", "3,0"), an invalid pattern ("[a-") or a condition that doesn't fit the field (transformCount with NOT_NULL) is accepted by Edit Lint Rule and when loaded from hop-lint.yml, and the rule never reports anything. The incompatible condition fails silently; the others log a NumberFormatException / PatternSyntaxException on every run. Expected: Edit Lint Rule rejects such values on OK, saying why, and rules loaded from hop-lint.yml or a pack get a warning naming the rule and the problem, as for unknown rule ids.
   - SYSTEM-001, SYSTEM-002 and SYSTEM-003 aren't listed or configurable. Unreadable files and failed runs are reported as SYSTEM-001 (File Processing Error), SYSTEM-002 (Configuration Error) and SYSTEM-003 (Unreadable Metadata), always at ERROR. They are hardcoded rather than defined in hop-lint-core.yml, so they don't appear in --list-rules, the Lint Rules Manager or the docs, and a severity override is ignored with "which no installed rule pack defines". Expected: define them in the core pack so they are listed, documented and configurable.
   - A broken rule pack's error doesn't name the pack. A broken hop-lint-pack.yml stops hop lint with only "while parsing a flow sequence in 'reader', line 6, column 13", although the docs say the error names the file or pack, as it does for a project's hop-lint.yml.
   
   **Suggestions**
   
   - Make suppressions easier to keep working. A suppression is stored by the element's name (source), so renaming a transform or action drops it, and suppress/exclude paths only match in their exact project-relative form (naming.hpl, not ./naming.hpl, **/naming.hpl or an absolute path), with no warning in either case. Updating source on rename, accepting the usual path forms and warning about entries that match nothing would help.
   - Lint Rules Manager: Toggle Enabled gives no feedback. The button always reads "Toggle Enabled", and only the ✓/✗ in the far-right Enabled column changes. It could read "Disable rule" / "Enable rule" for the selected rule, as Delete Rule becomes "Restore pack rule", and disabled rules could be greyed out.
   - Passwords with a literal part. NO_HARDCODED treats any value containing a variable as not hardcoded, so a connection password of MyPassw0rd${PG_SUFFIX} passes DB-001 although most of it is in the project. Mixing is fine for hostnames or URLs; should any literal text count as hardcoded for password fields?
   - Run Linter: allow variables in Minimum severity, Fail on and Report format, so thresholds can differ per environment. The combos accept typed text such as ${FAIL_ON}, which is silently replaced by the default when the workflow is reopened; if variables aren't supported, they could be read-only.
   - Clearer error when rules: is written as a list. rules: with dashes, like exclude and suppress, fails with "class java.util.ArrayList cannot be cast to class java.util.Map". Saying that rules maps each rule id to its settings would make the mistake obvious.
   
   ### Issue Priority
   
   Priority: 3
   
   ### Issue Component
   
   Component: Hop Gui


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: issues-unsubscribe@hop.apache.org.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


Re: [I] [Bug]: Lint: pre-commit hook, relative paths, --fail-on and other issues (hop)

Posted by "hansva (via GitHub)" <gi...@apache.org>.
hansva closed issue #9071: [Bug]: Lint: pre-commit hook, relative paths, --fail-on and other issues
URL: https://github.com/apache/hop/issues/9071


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: issues-unsubscribe@hop.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org