Skip to content
This repository has been archived by the owner on Jul 16, 2023. It is now read-only.

Commit

Permalink
update prev
Browse files Browse the repository at this point in the history
  • Loading branch information
dkrutskikh committed Jun 12, 2022
1 parent 0183393 commit fcf9930
Show file tree
Hide file tree
Showing 6 changed files with 32 additions and 44 deletions.
4 changes: 2 additions & 2 deletions lib/src/analyzers/lint_analyzer/lint_analyzer.dart
Original file line number Diff line number Diff line change
Expand Up @@ -81,8 +81,8 @@ class LintAnalyzer {
final analyzerResult = <LintFileReport>[];

for (final context in collection.contexts) {
final analysisOptions = await analysisOptionsFromContext(context) ??
await analysisOptionsFromFilePath(rootFolder, context);
final analysisOptions = analysisOptionsFromContext(context) ??
analysisOptionsFromFilePath(rootFolder, context);

final excludesRootFolder = analysisOptions.folderPath ?? rootFolder;

Expand Down
10 changes: 5 additions & 5 deletions lib/src/analyzers/unused_code_analyzer/unused_code_analyzer.dart
Original file line number Diff line number Diff line change
Expand Up @@ -55,7 +55,7 @@ class UnusedCodeAnalyzer {

for (final context in collection.contexts) {
final unusedCodeAnalysisConfig =
await _getAnalysisConfig(context, rootFolder, config);
_getAnalysisConfig(context, rootFolder, config);

final filePaths = getFilePaths(
folders,
Expand Down Expand Up @@ -98,13 +98,13 @@ class UnusedCodeAnalyzer {
return _getReports(codeUsages, publicCode, rootFolder);
}

Future<UnusedCodeAnalysisConfig> _getAnalysisConfig(
UnusedCodeAnalysisConfig _getAnalysisConfig(
AnalysisContext context,
String rootFolder,
UnusedCodeConfig config,
) async {
final analysisOptions = await analysisOptionsFromContext(context) ??
await analysisOptionsFromFilePath(rootFolder, context);
) {
final analysisOptions = analysisOptionsFromContext(context) ??
analysisOptionsFromFilePath(rootFolder, context);

final contextConfig =
ConfigBuilder.getUnusedCodeConfigFromOption(analysisOptions)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -47,7 +47,7 @@ class UnusedFilesAnalyzer {

for (final context in collection.contexts) {
final unusedFilesAnalysisConfig =
await _getAnalysisConfig(context, rootFolder, config);
_getAnalysisConfig(context, rootFolder, config);

final filePaths = getFilePaths(
folders,
Expand Down Expand Up @@ -92,13 +92,13 @@ class UnusedFilesAnalyzer {
}
}

Future<UnusedFilesAnalysisConfig> _getAnalysisConfig(
UnusedFilesAnalysisConfig _getAnalysisConfig(
AnalysisContext context,
String rootFolder,
UnusedFilesConfig config,
) async {
final analysisOptions = await analysisOptionsFromContext(context) ??
await analysisOptionsFromFilePath(rootFolder, context);
) {
final analysisOptions = analysisOptionsFromContext(context) ??
analysisOptionsFromFilePath(rootFolder, context);

final contextConfig =
ConfigBuilder.getUnusedFilesConfigFromOption(analysisOptions)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -51,8 +51,8 @@ class UnusedL10nAnalyzer {
final localizationUsages = <ClassElement, Set<String>>{};

for (final context in collection.contexts) {
final analysisOptions = await analysisOptionsFromContext(context) ??
await analysisOptionsFromFilePath(rootFolder, context);
final analysisOptions = analysisOptionsFromContext(context) ??
analysisOptionsFromFilePath(rootFolder, context);

final contextConfig =
ConfigBuilder.getUnusedL10nConfigFromOption(analysisOptions)
Expand Down
35 changes: 12 additions & 23 deletions lib/src/config_builder/models/analysis_options.dart
Original file line number Diff line number Diff line change
@@ -1,5 +1,4 @@
import 'dart:io';
import 'dart:isolate';

import 'package:analyzer/dart/analysis/analysis_context.dart';
import 'package:analyzer/dart/analysis/uri_converter.dart';
Expand Down Expand Up @@ -110,17 +109,17 @@ class AnalysisOptions {
}
}

Future<AnalysisOptions?> analysisOptionsFromContext(
AnalysisOptions? analysisOptionsFromContext(
AnalysisContext context,
) async {
) {
final optionsFilePath = context.contextRoot.optionsFile?.path;

return optionsFilePath == null
? null
: analysisOptionsFromFile(File(optionsFilePath), context);
}

Future<AnalysisOptions> analysisOptionsFromFilePath(
AnalysisOptions analysisOptionsFromFilePath(
String path,
AnalysisContext context,
) {
Expand All @@ -129,24 +128,24 @@ Future<AnalysisOptions> analysisOptionsFromFilePath(
return analysisOptionsFromFile(analysisOptionsFile, context);
}

Future<AnalysisOptions> analysisOptionsFromFile(
AnalysisOptions analysisOptionsFromFile(
File? options,
AnalysisContext context,
) async =>
) =>
options != null && options.existsSync()
? AnalysisOptions(
options.path,
await _loadConfigFromYamlFile(
_loadConfigFromYamlFile(
options,
context.currentSession.uriConverter,
),
)
: const AnalysisOptions(null, {});

Future<Map<String, Object>> _loadConfigFromYamlFile(
Map<String, Object> _loadConfigFromYamlFile(
File options,
UriConverter converter,
) async {
) {
try {
final node = options.existsSync()
? loadYamlNode(options.readAsStringSync())
Expand All @@ -157,25 +156,15 @@ Future<Map<String, Object>> _loadConfigFromYamlFile(

final includeNode = optionsNode['include'];
if (includeNode is String) {
Uri? resolvedUri;

final packageImport = includeNode.startsWith('package:');
if (packageImport) {
final includeUri = Uri.parse(includeNode);

final includePath = converter.uriToPath(includeUri);

resolvedUri = includePath != null
? Uri.parse(includePath)
: await Isolate.resolvePackageUri(includeUri);
} else {
resolvedUri =
Uri.file(p.absolute(p.dirname(options.path), includeNode));
}
final resolvedUri = packageImport
? converter.uriToPath(Uri.parse(includeNode))
: p.absolute(p.dirname(options.path), includeNode);

if (resolvedUri != null) {
final resolvedYamlMap =
await _loadConfigFromYamlFile(File.fromUri(resolvedUri), converter);
_loadConfigFromYamlFile(File(resolvedUri), converter);
optionsNode =
mergeMaps(defaults: resolvedYamlMap, overrides: optionsNode);
}
Expand Down
13 changes: 6 additions & 7 deletions test/src/config_builder/models/analysis_options_test.dart
Original file line number Diff line number Diff line change
Expand Up @@ -35,24 +35,23 @@ void main() {
group('analysisOptionsFromFile constructs AnalysisOptions from', () {
final context = AnalysisContextMock();

test('null', () async {
final options = await analysisOptionsFromFile(null, context);
test('null', () {
final options = analysisOptionsFromFile(null, context);

expect(options.options, isEmpty);
});

test('invalid file', () async {
test('invalid file', () {
final options =
await analysisOptionsFromFile(File('unavailable.yaml'), context);
analysisOptionsFromFile(File('unavailable.yaml'), context);

expect(options.options, isEmpty);
});

test('yaml file', () async {
test('yaml file', () {
const yamlFilePath = './test/resources/analysis_options_pkg.yaml';

final options =
await analysisOptionsFromFile(File(yamlFilePath), context);
final options = analysisOptionsFromFile(File(yamlFilePath), context);

expect(options.options, contains('linter'));
expect(options.options['linter'], contains('rules'));
Expand Down

0 comments on commit fcf9930

Please sign in to comment.