create method

CoverageReport create({
  1. required Map<String, Map<int, int>> hitmap,
  2. required Directory packageDirectory,
  3. required String package,
  4. List<String>? includeRegexes,
  5. List<String>? excludeRegexes,
  6. bool? ignoreBarrelFiles,
})

creates a CoverageReport using a hitmap to know which files were covered, and the packageDirectory to know which files were not covered. The package name is used to remove the package:${package-name} prefix

Implementation

CoverageReport create({
  required Map<String, Map<int, int>> hitmap,
  required Directory packageDirectory,
  required String package,
  List<String>? includeRegexes,
  List<String>? excludeRegexes,
  bool? ignoreBarrelFiles,
}) {
  var coveredFiles = _extractFilesReportDetails(hitmap);
  var packageFiles = _findPackageFilesNames(
    packageDirectory: packageDirectory,
    package: package,
  );
  final exclude = excludeRegexes?.map((regExp) => RegExp(regExp)) ?? [];
  final include = includeRegexes?.map((regExp) => RegExp(regExp)) ?? [];
  coveredFiles.removeWhere((path, _) {
    return exclude.any((regExp) => regExp.hasMatch(path)) &&
        !include.any((regExp) => regExp.hasMatch(path));
  });
  packageFiles.removeWhere((path) {
    return exclude.any((regExp) => regExp.hasMatch(path)) &&
        !include.any((regExp) => regExp.hasMatch(path));
  });
  if (ignoreBarrelFiles ?? false) {
    coveredFiles.removeWhere((path, _) => _isBarrelFile(path));
    packageFiles.removeWhere((path) => _isBarrelFile(path));
  }
  return CoverageReport(
    coveredFiles: coveredFiles,
    packageFiles: packageFiles,
  );
}