findInconsistentDependencies function

List<DependencyUsageReport<PackageDependency>> findInconsistentDependencies(
  1. Map<String, PubspecLock> pubspecLocks
)

Finds inconsistent set of external dependencies in the provided set of pubspec.lock content and generates report on inconsistent package usage. As analysis focuses on consistency of external dependencies, consistency of path dependencies is ignored. However, if a dependency is specified by a mix of path and other dependency types in different pubspec.yaml files, this case is reported as inconsistency.

NB: To simplify implementation at this moment, version specifications are compared as strings, not semantically.

Implementation

List<DependencyUsageReport<PackageDependency>> findInconsistentDependencies(
  Map<String, PubspecLock> pubspecLocks,
) {
  final dependencies = _collectAllDependencies(pubspecLocks).toSet();
  final externalDependencies =
      _filterOutPathOnlyDependencies(dependencies).toSet();
  final normalizedDependencyMap =
      _normalizeDependencyType(externalDependencies);
  final normalizedDependencies = normalizedDependencyMap.keys.toSet();
  final inconsistentDependencies =
      _filterOutConsistentDependencies(normalizedDependencies).toSet();
  return _createReport(
    inconsistentDependencies,
    normalizedDependencyMap,
    pubspecLocks,
  );
}