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
Source
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