create method
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,
);
}