blob: 6b21c2e20279721f2e8eebde25702a0d73f5446e [file] [log] [blame]
// Copyright (c) 2023, the Dart project authors. Please see the AUTHORS file
// for details. All rights reserved. Use of this source code is governed by a
// BSD-style license that can be found in the LICENSE file.
import 'dart:io';
import 'package:front_end/src/testing/analysis_helper.dart';
import 'package:front_end/src/testing/dynamic_analysis.dart';
import 'package:_fe_analyzer_shared/src/messages/diagnostic_message.dart';
import 'package:kernel/ast.dart';
import "io_utils.dart";
final Uri repoDir = computeRepoDirUri();
Future<void> main(List<String> args) async {
List<Uri> entryPoints = [];
for (FileSystemEntity entry
in new Directory.fromUri(repoDir.resolve("pkg/frontend_server/lib/"))
.listSync(recursive: true)) {
if (entry is! File) continue;
entryPoints.add(entry.uri);
}
await run(entryPoints,
'pkg/frontend_server/test/frontend_server_dynamic_allowed.json',
analyzedUrisFilter: (Uri uri) =>
'$uri'.startsWith('package:frontend_server/'),
verbose: args.contains('-v'),
generate: args.contains('-g'));
}
Future<void> run(List<Uri> entryPoints, String allowedListPath,
{bool verbose = false,
bool generate = false,
bool Function(Uri uri)? analyzedUrisFilter}) async {
await runAnalysis(entryPoints,
(DiagnosticMessageHandler onDiagnostic, Component component) {
new DynamicVisitor(
onDiagnostic, component, allowedListPath, analyzedUrisFilter)
.run(verbose: verbose, generate: generate);
});
}