analyze method
Implementation
Future<DependencyAnalysisResult> analyze() async {
// -----------------------------------------------
// Parse pubspec.yaml
// -----------------------------------------------
final pubspecParser = PubspecParser(projectPath: projectPath);
final directDependencies = pubspecParser.parse();
// -----------------------------------------------
// Parse resolved dependencies
// -----------------------------------------------
final depsParser = PubDepsParser(projectPath: projectPath);
final lockedDependencies = depsParser.parse();
// -----------------------------------------------
// Build dependency graph
// -----------------------------------------------
final graph = DependencyGraph(dependencies: lockedDependencies);
// -----------------------------------------------
// Fetch Pub.dev information
// -----------------------------------------------
final packageInfo = <String, PubPackageInfo>{};
final service = PubDevService();
final packagesToCheck = lockedDependencies.where(
(package) => package.isDirect || package.isDev,
);
try {
for (final package in packagesToCheck) {
final info = await service.getPackageInfo(package.name);
if (info != null) {
packageInfo[package.name] = info;
}
}
} finally {
service.dispose();
}
// -----------------------------------------------
// Analyze health
// -----------------------------------------------
final healthAnalyzer = HealthAnalyzer();
final health = healthAnalyzer.analyze(
packagesToCheck.toList(),
packageInfo,
);
// -----------------------------------------------
// Return result
// -----------------------------------------------
return DependencyAnalysisResult(
directDependencies: directDependencies,
lockedDependencies: lockedDependencies,
graph: graph,
health: health,
);
}