anchor.diff:    final List<WorkerJob> jobs = <WorkerJob>[];
     for (Command command in changedFileBuildCommands) {
       final String relativePath = path.relative(command.file.path, from: repoPath.parent.path);
  -    final String ignoreReason = await shouldIgnoreFile(command.file);
  -    if (ignoreReason.isEmpty) {
  -      final String tidyArgs = calcTidyArgs(command);
  -      final List<String> args = <String>[command.file.path, checks, '--'];
  -      args.addAll(tidyArgs?.split(' ') ?? <String>[]);
  -      print('🔶 linting $relativePath');
  -      jobs.add(WorkerJob(
  -        <String>[tidyPath, ...args],
  -        workingDirectory: command.directory,
  -        name: 'clang-tidy on ${command.file.path}',
  -      ));
  -    } else {
  -      print('🔷 ignoring $relativePath ($ignoreReason)');
  +    final LintAction action = await getLintAction(command.file);
  +    switch (action) {
  +      case LintAction.skipNoLint:
  +        print('🔷 ignoring $relativePath (FLUTTER_NOLINT)');
  +        break;
  +      case LintAction.failMalformedNoLint:
  +        print('❌ malformed opt-out $relativePath');
  +        print('   Required format: // FLUTTER_NOLINT: $issueUrlPrefix/ISSUE_ID');
  +        exitCode = 1;
  +        break;
  +      case LintAction.lint:
  +        print('🔶 linting $relativePath');
  +        jobs.add(createLintJob(command, checks, tidyPath));
  +        break;
  +      case LintAction.skipThirdParty:
  +        print('🔷 ignoring $relativePath (third_party)');
  +        break;
       }
     }
     final ProcessPool pool = ProcessPool();
  
positive.code:   print('\n');
    if (exitCode == 0) {
      print('No lint problems found.');
    }
  }
  
negative.code: more information on addressing these issues please see:
  https://github.com/flutter/flutter/wiki/Engine-Clang-Tidy-Linter
  ''';
  
  const String issueUrlPrefix = 'https://github.com/flutter/flutter/issues';
  
  class Command {
    Directory directory = Directory('');
  