Revert "Add many more global analyses. (#47875)" (#48080)

This reverts commit e768c92fbc.
This commit is contained in:
Francisco Magdaleno
2020-01-02 09:25:59 -08:00
committed by GitHub
parent e768c92fbc
commit 04ea3183ce
85 changed files with 513 additions and 994 deletions

View File

@@ -4,14 +4,44 @@
import 'dart:async';
import 'dart:convert';
import 'dart:core' hide print;
import 'dart:io' hide exit;
import 'dart:io';
import 'package:path/path.dart' as path;
import 'utils.dart';
final bool hasColor = stdout.supportsAnsiEscapes;
// TODO(ianh): These two functions should be refactored into something that avoids all this code duplication.
final String bold = hasColor ? '\x1B[1m' : ''; // used for shard titles
final String red = hasColor ? '\x1B[31m' : ''; // used for errors
final String green = hasColor ? '\x1B[32m' : ''; // used for section titles, commands
final String yellow = hasColor ? '\x1B[33m' : ''; // unused
final String cyan = hasColor ? '\x1B[36m' : ''; // used for paths
final String reverse = hasColor ? '\x1B[7m' : ''; // used for clocks
final String reset = hasColor ? '\x1B[0m' : '';
final String redLine = '$red━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━$reset';
String get clock {
final DateTime now = DateTime.now();
return '$reverse'
'${now.hour.toString().padLeft(2, "0")}:'
'${now.minute.toString().padLeft(2, "0")}:'
'${now.second.toString().padLeft(2, "0")}'
'$reset';
}
String prettyPrintDuration(Duration duration) {
String result = '';
final int minutes = duration.inMinutes;
if (minutes > 0)
result += '${minutes}min ';
final int seconds = duration.inSeconds - minutes * 60;
final int milliseconds = duration.inMilliseconds - (seconds * 1000 + minutes * 60 * 1000);
result += '$seconds.${milliseconds.toString().padLeft(3, "0")}s';
return result;
}
void printProgress(String action, String workingDir, String command) {
print('$clock $action: cd $cyan$workingDir$reset; $green$command$reset');
}
Stream<String> runAndGetStdout(String executable, List<String> arguments, {
String workingDirectory,
@@ -19,14 +49,11 @@ Stream<String> runAndGetStdout(String executable, List<String> arguments, {
bool expectNonZeroExit = false,
int expectedExitCode,
String failureMessage,
bool skip = false,
Function beforeExit,
}) async* {
final String commandDescription = '${path.relative(executable, from: workingDirectory)} ${arguments.join(' ')}';
final String relativeWorkingDir = path.relative(workingDirectory);
if (skip) {
printProgress('SKIPPING', relativeWorkingDir, commandDescription);
return;
}
printProgress('RUNNING', relativeWorkingDir, commandDescription);
final Stopwatch time = Stopwatch()..start();
@@ -37,21 +64,26 @@ Stream<String> runAndGetStdout(String executable, List<String> arguments, {
stderr.addStream(process.stderr);
final Stream<String> lines = process.stdout.transform(utf8.decoder).transform(const LineSplitter());
await for (String line in lines)
await for (String line in lines) {
yield line;
}
final int exitCode = await process.exitCode;
if ((exitCode == 0) == expectNonZeroExit || (expectedExitCode != null && exitCode != expectedExitCode)) {
exitWithError(<String>[
if (failureMessage != null)
failureMessage
else
'${bold}ERROR: ${red}Last command exited with $exitCode (expected: ${expectNonZeroExit ? (expectedExitCode ?? 'non-zero') : 'zero'}).$reset',
'${bold}Command: $green$commandDescription$reset',
'${bold}Relative working directory: $cyan$relativeWorkingDir$reset',
]);
}
print('$clock ELAPSED TIME: ${prettyPrintDuration(time.elapsed)} for $green$commandDescription$reset in $cyan$relativeWorkingDir$reset');
if ((exitCode == 0) == expectNonZeroExit || (expectedExitCode != null && exitCode != expectedExitCode)) {
if (failureMessage != null) {
print(failureMessage);
}
print(
'$redLine\n'
'${bold}ERROR: ${red}Last command exited with $exitCode (expected: ${expectNonZeroExit ? (expectedExitCode ?? 'non-zero') : 'zero'}).$reset\n'
'${bold}Command: $green$commandDescription$reset\n'
'${bold}Relative working directory: $cyan$relativeWorkingDir$reset\n'
'$redLine'
);
beforeExit?.call();
exit(1);
}
}
Future<void> runCommand(String executable, List<String> arguments, {
@@ -65,10 +97,9 @@ Future<void> runCommand(String executable, List<String> arguments, {
bool skip = false,
bool Function(String) removeLine,
}) async {
assert(
(outputMode == OutputMode.capture) == (output != null),
'The output parameter must be non-null with and only with OutputMode.capture',
);
assert((outputMode == OutputMode.capture) == (output != null),
'The output parameter must be non-null with and only with '
'OutputMode.capture');
final String commandDescription = '${path.relative(executable, from: workingDirectory)} ${arguments.join(' ')}';
final String relativeWorkingDir = path.relative(workingDirectory);
@@ -106,12 +137,18 @@ Future<void> runCommand(String executable, List<String> arguments, {
}
final int exitCode = await process.exitCode;
print('$clock ELAPSED TIME: ${prettyPrintDuration(time.elapsed)} for $green$commandDescription$reset in $cyan$relativeWorkingDir$reset');
if (output != null) {
output.stdout = _flattenToString(await savedStdout);
output.stderr = _flattenToString(await savedStderr);
}
if ((exitCode == 0) == expectNonZeroExit || (expectedExitCode != null && exitCode != expectedExitCode)) {
if (failureMessage != null) {
print(failureMessage);
}
// Print the output when we get unexpected results (unless output was
// printed already).
switch (outputMode) {
@@ -123,16 +160,15 @@ Future<void> runCommand(String executable, List<String> arguments, {
stderr.writeln(_flattenToString(await savedStderr));
break;
}
exitWithError(<String>[
if (failureMessage != null)
failureMessage
else
'${bold}ERROR: ${red}Last command exited with $exitCode (expected: ${expectNonZeroExit ? (expectedExitCode ?? 'non-zero') : 'zero'}).$reset',
'${bold}Command: $green$commandDescription$reset',
'${bold}Relative working directory: $cyan$relativeWorkingDir$reset',
]);
print(
'$redLine\n'
'${bold}ERROR: ${red}Last command exited with $exitCode (expected: ${expectNonZeroExit ? (expectedExitCode ?? 'non-zero') : 'zero'}).$reset\n'
'${bold}Command: $green$commandDescription$reset\n'
'${bold}Relative working directory: $cyan$relativeWorkingDir$reset\n'
'$redLine'
);
exit(1);
}
print('$clock ELAPSED TIME: ${prettyPrintDuration(time.elapsed)} for $green$commandDescription$reset in $cyan$relativeWorkingDir$reset');
}
/// Flattens a nested list of UTF-8 code units into a single string.