Home / Function/ makeRule() — react Function Reference

makeRule() — react Function Reference

Architecture documentation for the makeRule() function in ReactCompiler.ts from the react codebase.

Entity Profile

Dependency Diagram

graph TD
  9fecf8a2_108d_7c6f_3ec2_f2e4ec9e6ad1["makeRule()"]
  40190dd7_cea0_7135_9d7e_df5f2d3454b7["ReactCompiler.ts"]
  9fecf8a2_108d_7c6f_3ec2_f2e4ec9e6ad1 -->|defined in| 40190dd7_cea0_7135_9d7e_df5f2d3454b7
  dc45eeec_7cda_3dde_2446_228b95f1d232["allRules()"]
  dc45eeec_7cda_3dde_2446_228b95f1d232 -->|calls| 9fecf8a2_108d_7c6f_3ec2_f2e4ec9e6ad1
  e1d806ee_56f0_fe64_b5db_0e28ea3b30a8["recommendedRules()"]
  e1d806ee_56f0_fe64_b5db_0e28ea3b30a8 -->|calls| 9fecf8a2_108d_7c6f_3ec2_f2e4ec9e6ad1
  dfe2e27a_b0fb_7783_8470_b0807f5f52fa["recommendedLatestRules()"]
  dfe2e27a_b0fb_7783_8470_b0807f5f52fa -->|calls| 9fecf8a2_108d_7c6f_3ec2_f2e4ec9e6ad1
  8306012b_adca_1994_63fd_18327ea13f3a["getReactCompilerResult()"]
  9fecf8a2_108d_7c6f_3ec2_f2e4ec9e6ad1 -->|calls| 8306012b_adca_1994_63fd_18327ea13f3a
  3d667cb3_2222_99f2_f624_c691b0793987["hasFlowSuppression()"]
  9fecf8a2_108d_7c6f_3ec2_f2e4ec9e6ad1 -->|calls| 3d667cb3_2222_99f2_f624_c691b0793987
  9d9da58d_f4cc_1736_ee8a_05dc09d503f7["makeSuggestions()"]
  9fecf8a2_108d_7c6f_3ec2_f2e4ec9e6ad1 -->|calls| 9d9da58d_f4cc_1736_ee8a_05dc09d503f7
  style 9fecf8a2_108d_7c6f_3ec2_f2e4ec9e6ad1 fill:#6366f1,stroke:#818cf8,color:#fff

Relationship Graph

Source Code

packages/eslint-plugin-react-hooks/src/shared/ReactCompiler.ts lines 110–163

function makeRule(rule: LintRule): Rule.RuleModule {
  const create = (context: Rule.RuleContext): Rule.RuleListener => {
    const result = getReactCompilerResult(context);

    for (const event of result.events) {
      if (event.kind === 'CompileError') {
        const detail = event.detail;
        if (detail.category === rule.category) {
          const loc = detail.primaryLocation();
          if (loc == null || typeof loc === 'symbol') {
            continue;
          }
          if (
            hasFlowSuppression(result, loc, [
              'react-rule-hook',
              'react-rule-unsafe-ref',
            ])
          ) {
            // If Flow already caught this error, we don't need to report it again.
            continue;
          }
          /*
           * TODO: if multiple rules report the same linter category,
           * we should deduplicate them with a "reported" set
           */
          context.report({
            message: detail.printErrorMessage(result.sourceCode, {
              eslint: true,
            }),
            loc,
            suggest: makeSuggestions(detail.options),
          });
        }
      }
    }
    return {};
  };

  return {
    meta: {
      type: 'problem',
      docs: {
        description: rule.description,
        recommended: rule.preset === LintRulePreset.Recommended,
        url: `https://react.dev/reference/eslint-plugin-react-hooks/lints/${rule.name}`,
      },
      fixable: 'code',
      hasSuggestions: true,
      // validation is done at runtime with zod
      schema: [{type: 'object', additionalProperties: true}],
    },
    create,
  };
}

Domain

Subdomains

Frequently Asked Questions

What does makeRule() do?
makeRule() is a function in the react codebase, defined in packages/eslint-plugin-react-hooks/src/shared/ReactCompiler.ts.
Where is makeRule() defined?
makeRule() is defined in packages/eslint-plugin-react-hooks/src/shared/ReactCompiler.ts at line 110.
What does makeRule() call?
makeRule() calls 3 function(s): getReactCompilerResult, hasFlowSuppression, makeSuggestions.
What calls makeRule()?
makeRule() is called by 3 function(s): allRules, recommendedLatestRules, recommendedRules.

Analyze Your Own Codebase

Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.

Try Supermodel Free