Skip to content

Enhancement: programmatic hook, or structured output, for downstream CLI tools #108

Closed

Description

@BatmanAoD

I'd like to be able to generate "possible" lints with relint, and then use other CLI tools to determine whether each lint is a false positive or not.

Specifically, my use-case is to find instances of \bTODO #\d+ and check whether the #\d+ refers to an open ticket. This requires checking the status of tickets in a ticket-tracker, which is well outside the purview of relint. But if relint had a way to feed a particular lint to a downstream program, especially using regex captures, this would be pretty simple:

- name: TODOS with tickets
  pattern: '\bTODO #(\d+)'
  hint: make sure that the ticket is open
  error: false
  filePattern: '^(?!docs/)'
  postprocess: "glab issue show '${1}' | grep '^state:' | grep -q open"

Here, a status code of 1 means that the lint IS valid, and 0 means it's a false positive. (I'm not sure whether there's a better way to do this than using status codes, and it's not obvious whether 0 should mean "valid" or "false positive", but I think those are primarily documentation issues.)

Activity

  1. mroy-seedbox commented on Mar 8, 2025

    @mroy-seedbox

    Related:

    Bonus: if test_func is used in combination with pattern, it should only operate on regex matches instead of on the entire file. This would make it the equivalent of the postprocess proposed above, but would make for a better integration than CLI exit codes (assuming that some kind of Python interface would exist in order to integrate the test_funcs with reLint).

    Note: from Python, we could then pretty easily integrate with CLI tools if necessary.

  2. Repository owner locked and limited conversation to collaborators on Mar 15, 2025
  3. converted this issue into a discussion #109 on Mar 15, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions