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

Commit b5d5fba

Browse files
authored
fix: add static byte store to reuse between plugin instances (#676)
* fix: add static bytestore to reuse between plugin instances * chore: update changelog
1 parent 892263c commit b5d5fba

File tree

3 files changed

+14
-8
lines changed

3 files changed

+14
-8
lines changed

CHANGELOG.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
## Unreleased
44

5+
* fix: move byte store out of driver creation to reuse it between multiple plugins.
56
* fix: add `monorepo` flag for `check-unused-code` command.
67
* fix: ignore a class usage inside `State<T>` for `check-unused-code` command.
78
* fix: correctly handle variables declaration for `check-unused-code` command.

lib/src/analyzer_plugin/analyzer_plugin.dart

Lines changed: 11 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -2,16 +2,16 @@
22

33
import 'dart:async';
44

5-
import 'package:analyzer/dart/analysis/context_builder.dart';
65
import 'package:analyzer/dart/analysis/context_locator.dart';
76
import 'package:analyzer/dart/analysis/results.dart';
87
import 'package:analyzer/file_system/file_system.dart';
8+
import 'package:analyzer/file_system/physical_file_system.dart';
99
// ignore: implementation_imports
1010
import 'package:analyzer/src/analysis_options/analysis_options_provider.dart';
1111
// ignore: implementation_imports
12-
import 'package:analyzer/src/dart/analysis/driver.dart';
12+
import 'package:analyzer/src/dart/analysis/context_builder.dart';
1313
// ignore: implementation_imports
14-
import 'package:analyzer/src/dart/analysis/driver_based_analysis_context.dart';
14+
import 'package:analyzer/src/dart/analysis/driver.dart';
1515
import 'package:analyzer_plugin/plugin/plugin.dart';
1616
import 'package:analyzer_plugin/protocol/protocol_generated.dart' as plugin;
1717

@@ -21,9 +21,12 @@ import '../analyzers/lint_analyzer/metrics/metrics_list/number_of_parameters_met
2121
import '../analyzers/lint_analyzer/metrics/metrics_list/source_lines_of_code/source_lines_of_code_metric.dart';
2222
import '../config_builder/config_builder.dart';
2323
import '../config_builder/models/analysis_options.dart';
24+
import '../utils/analyzer_utils.dart';
2425
import '../utils/yaml_utils.dart';
2526
import 'analyzer_plugin_utils.dart';
2627

28+
final _byteStore = createByteStore(PhysicalResourceProvider.INSTANCE);
29+
2730
class AnalyzerPlugin extends ServerPlugin {
2831
static const _analyzer = LintAnalyzer();
2932

@@ -72,9 +75,11 @@ class AnalyzerPlugin extends ServerPlugin {
7275
throw error;
7376
}
7477

75-
final builder = ContextBuilder(resourceProvider: resourceProvider);
76-
final context = builder.createContext(contextRoot: locator.first)
77-
as DriverBasedAnalysisContext;
78+
final builder = ContextBuilderImpl(resourceProvider: resourceProvider);
79+
final context = builder.createContext(
80+
contextRoot: locator.first,
81+
byteStore: _byteStore,
82+
);
7883
final dartDriver = context.driver;
7984
final config = _createConfig(dartDriver, rootPath);
8085

lib/src/utils/analyzer_utils.dart

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ AnalysisContextCollection createAnalysisContextCollection(
2222
includedPaths:
2323
folders.map((path) => normalize(join(rootFolder, path))).toList(),
2424
resourceProvider: resourceProvider,
25-
byteStore: _createByteStore(resourceProvider),
25+
byteStore: createByteStore(resourceProvider),
2626
);
2727
}
2828

@@ -44,7 +44,7 @@ Set<String> getFilePaths(
4444

4545
/// If the state location can be accessed, return the file byte store,
4646
/// otherwise return the memory byte store.
47-
ByteStore _createByteStore(PhysicalResourceProvider resourceProvider) {
47+
ByteStore createByteStore(PhysicalResourceProvider resourceProvider) {
4848
const M = 1024 * 1024 /*1 MiB*/;
4949
const G = 1024 * 1024 * 1024 /*1 GiB*/;
5050

0 commit comments

Comments
 (0)