Skip to content

Commit 3c37903

Browse files
committed
Don’t crash if we can’t create an analysis context
1 parent b938eb1 commit 3c37903

File tree

3 files changed

+27
-14
lines changed

3 files changed

+27
-14
lines changed

bin/main.dart

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,11 @@ main(List<String> arguments) async {
1818
log.Logger.root.onRecord.listen((record) {
1919
var wroteHeader = false;
2020

21-
var msg = LineSplitter.split(record.message).map((l) {
21+
var msg = LineSplitter
22+
.split([record.message, record.error, record.stackTrace]
23+
.where((e) => e != null)
24+
.join('\n'))
25+
.map((l) {
2226
String prefix;
2327
if (wroteHeader) {
2428
prefix = '';

lib/pana.dart

Lines changed: 21 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -71,22 +71,31 @@ class PackageAnalyzer {
7171
upgrade.exitCode, upgrade.stdout, upgrade.stderr, pkgDir);
7272
log.info("Package version: ${summary.pkgVersion}");
7373

74-
LibraryScanner libraryScanner =
75-
new LibraryScanner(package, pkgDir, isFlutter);
7674
Map<String, List<String>> directLibs;
77-
try {
78-
directLibs = await libraryScanner.scanDirectLibs();
79-
} catch (e, st) {
80-
log.severe('Error scanning direct librariers', e, st);
81-
}
8275
Map<String, List<String>> transitiveLibs;
76+
77+
LibraryScanner libraryScanner;
78+
8379
try {
84-
transitiveLibs = await libraryScanner.scanTransitiveLibs();
85-
// TODO: add platform classification based on transitive libs
86-
} catch (e, st) {
87-
log.severe('Error scanning transitive librariers', e, st);
80+
libraryScanner = new LibraryScanner(package, pkgDir, isFlutter);
81+
} on StateError catch (e, stack) {
82+
log.severe("Could not create LibraryScanner", e, stack);
83+
}
84+
85+
if (libraryScanner != null) {
86+
try {
87+
directLibs = await libraryScanner.scanDirectLibs();
88+
} catch (e, st) {
89+
log.severe('Error scanning direct librariers', e, st);
90+
}
91+
try {
92+
transitiveLibs = await libraryScanner.scanTransitiveLibs();
93+
// TODO: add platform classification based on transitive libs
94+
} catch (e, st) {
95+
log.severe('Error scanning transitive librariers', e, st);
96+
}
97+
if (!keepTransitiveLibs) transitiveLibs = null;
8898
}
89-
if (!keepTransitiveLibs) transitiveLibs = null;
9099

91100
Set<AnalyzerOutput> analyzerItems;
92101
try {

lib/src/library_analyzer.dart

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,7 @@ class LibraryScanner {
4545
var dotPackagesPath = p.join(projectPath, '.packages');
4646
if (!FileSystemEntity.isFileSync(dotPackagesPath)) {
4747
throw new StateError('A package configuration file was not found at the '
48-
'expectetd location. $dotPackagesPath');
48+
'expectetd location.\n$dotPackagesPath');
4949
}
5050

5151
RunPubList runPubList;

0 commit comments

Comments
 (0)