2020-10-05 22:47:57 +00:00
|
|
|
// Copyright 2014 The Flutter Authors. 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:path/path.dart' as path;
|
|
|
|
|
2021-03-31 23:55:20 +00:00
|
|
|
/// Count the number of libraries that import globals_null_migrated.dart and globals.dart in lib and test.
|
2020-10-05 22:47:57 +00:00
|
|
|
///
|
|
|
|
/// This must be run from the flutter_tools project root directory.
|
|
|
|
void main() {
|
|
|
|
final Directory sources = Directory(path.join(Directory.current.path, 'lib'));
|
|
|
|
final Directory tests = Directory(path.join(Directory.current.path, 'test'));
|
2021-03-31 23:55:20 +00:00
|
|
|
countGlobalImports(sources);
|
|
|
|
countGlobalImports(tests);
|
2020-10-05 22:47:57 +00:00
|
|
|
}
|
|
|
|
|
2021-03-31 23:55:20 +00:00
|
|
|
final RegExp globalImport = RegExp(r"import.*(?:globals|globals_null_migrated)\.dart' as globals;");
|
|
|
|
final RegExp globalNullUnsafeImport = RegExp('import.*globals.dart\' as globals;');
|
2020-10-05 22:47:57 +00:00
|
|
|
|
2021-03-31 23:55:20 +00:00
|
|
|
void countGlobalImports(Directory directory) {
|
2020-10-05 22:47:57 +00:00
|
|
|
int count = 0;
|
2021-03-31 23:55:20 +00:00
|
|
|
int nullUnsafeImportCount = 0;
|
2020-10-05 22:47:57 +00:00
|
|
|
for (final FileSystemEntity file in directory.listSync(recursive: true)) {
|
|
|
|
if (!file.path.endsWith('.dart') || file is! File) {
|
|
|
|
continue;
|
|
|
|
}
|
2021-03-31 23:55:20 +00:00
|
|
|
final List<String> fileLines = file.readAsLinesSync();
|
|
|
|
final bool hasImport = fileLines.any((String line) {
|
2020-10-05 22:47:57 +00:00
|
|
|
return globalImport.hasMatch(line);
|
|
|
|
});
|
|
|
|
if (hasImport) {
|
|
|
|
count += 1;
|
|
|
|
}
|
2021-03-31 23:55:20 +00:00
|
|
|
final bool hasUnsafeImport = fileLines.any((String line) {
|
|
|
|
return globalNullUnsafeImport.hasMatch(line);
|
|
|
|
});
|
|
|
|
if (hasUnsafeImport) {
|
|
|
|
nullUnsafeImportCount += 1;
|
|
|
|
}
|
2020-10-05 22:47:57 +00:00
|
|
|
}
|
2021-03-31 23:55:20 +00:00
|
|
|
print('${path.basename(directory.path)} contains $count libraries with global usage ($nullUnsafeImportCount unsafe)');
|
2020-10-05 22:47:57 +00:00
|
|
|
}
|