in tool/doc.dart [357:431]
void generate({String? filePath}) {
var buffer = StringBuffer();
buffer.writeln('# Linter for Dart');
buffer.writeln();
buffer.writeln('## Lint Rules');
buffer.writeln();
buffer.writeln(
'[Using the Linter](https://dart.dev/guides/language/analysis-options#enabling-linter-rules)');
buffer.writeln();
buffer.writeln('## Supported Lint Rules');
buffer.writeln();
buffer.writeln('This list is auto-generated from our sources.');
buffer.writeln();
buffer.writeln(ruleLeadMatter);
buffer.writeln();
for (var group in Group.builtin) {
buffer.writeln('- **${group.name}** - ${group.description}');
buffer.writeln();
}
buffer.writeln(ruleFootMatter);
buffer.writeln();
void emit(LintRule rule) {
buffer
.writeln('**[${rule.name}](${rule.name}.md)** - ${rule.description}');
if (coreRules.contains(rule.name)) {
buffer.writeln('[]'
'(https://github.com/dart-lang/lints/blob/main/lib/core.yaml)');
}
if (recommendedRules.contains(rule.name)) {
buffer.writeln('[]'
'(https://github.com/dart-lang/lints/blob/main/lib/recommended.yaml)');
}
if (flutterRules.contains(rule.name)) {
buffer.writeln('[]'
'(https://github.com/flutter/packages/blob/master/packages/'
'flutter_lints/lib/flutter.yaml)');
}
if (pedanticRules.contains(rule.name)) {
buffer.writeln('[]'
'(https://github.com/dart-lang/pedantic/#enabled-lints)');
}
buffer.writeln();
}
buffer.writeln('## Error Rules');
buffer.writeln();
// ignore: prefer_foreach
for (var rule in rules.where((rule) => rule.group == Group.errors)) {
emit(rule);
}
buffer.writeln('## Style Rules');
buffer.writeln();
// ignore: prefer_foreach
for (var rule in rules.where((rule) => rule.group == Group.style)) {
emit(rule);
}
buffer.writeln('## Pub Rules');
buffer.writeln();
// ignore: prefer_foreach
for (var rule in rules.where((rule) => rule.group == Group.pub)) {
emit(rule);
}
if (filePath == null) {
print(buffer.toString());
} else {
File('$filePath/index.md').writeAsStringSync(buffer.toString());
}
}