Skip to content

Allow linter configuration to filter graph diagnostics - #1000

Open
st0012 wants to merge 2 commits into
mainfrom
codex/configurable-graph-diagnostics
Open

Allow linter configuration to filter graph diagnostics#1000
st0012 wants to merge 2 commits into
mainfrom
codex/configurable-graph-diagnostics

Conversation

@st0012

@st0012 st0012 commented Aug 11, 2026

Copy link
Copy Markdown
Member

I decided to surface the graph rule diagnostics via linter because they are basically rules defined by us. But currently the linter configuration can't disable them, which is inconsistent and can create noise users don't want.

So in this PR, I implemented the plumbing to allow filtering graph diagnostics with linter configurations.
One difference is: when we disable a linter rule (say MyLinterRule), that linter rule is not executed at all. If we do the same for the graph rule (say invalid-constant-visibility), the diagnostics can still be accessed via graph, but won't show up in the linter result.

@st0012
st0012 force-pushed the codex/configurable-graph-diagnostics branch from 0378f0b to 2b164df Compare August 11, 2026 20:12
@st0012
st0012 marked this pull request as ready for review August 11, 2026 20:16
@st0012
st0012 requested a review from a team as a code owner August 11, 2026 20:16
Comment thread lib/rubydex/cli/command/lint.rb Outdated
#: (Rubydex::LinterConfig config, Array[singleton(Rubydex::Linter::Rule)] known_rule_classes) -> void
def warn_unknown_rules(config, known_rule_classes)
known_rule_names = known_rule_classes.map(&:rule_name).uniq.sort
known_rule_names = (known_rule_classes.map(&:rule_name) + Rubydex::Diagnostic.graph_rule_names).uniq.sort

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I don't think we ever reach this point from the CLI if known_rule_classes is empty?

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Let's add a test where the CLI without a rule should at least show the built-in diagnostics?

///
/// - `out_names` must be a valid, writable pointer.
#[unsafe(no_mangle)]
pub unsafe extern "C" fn rdx_graph_diagnostic_names(out_names: *mut *const *const c_char) -> usize {

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This looks like it belongs to Rule and not Diagnostic. Conceptually, a Rule is a type of mistake someone can make and a Diagnostic is an occurrence of that mistake.

If we want the names of the rules, so that they can be filtered, then shouldn't this method be in Rule? Like, Rule.all or Rule.built_in?

Assisted-By: devx/8c506d68-42fe-4150-abdf-cf627a09bef8
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants