Skip to content

Instantly share code, notes, and snippets.

@scheglov
Created February 1, 2017 01:48
Show Gist options
  • Save scheglov/a7122e29add2f62caaae172405e185b2 to your computer and use it in GitHub Desktop.
Save scheglov/a7122e29add2f62caaae172405e185b2 to your computer and use it in GitHub Desktop.
Example of using AnalysisDriver
import 'dart:io';
import 'package:analyzer/file_system/physical_file_system.dart';
import 'package:analyzer/src/context/builder.dart';
import 'package:analyzer/src/dart/analysis/byte_store.dart';
import 'package:analyzer/src/dart/analysis/driver.dart';
import 'package:analyzer/src/dart/analysis/file_byte_store.dart';
import 'package:analyzer/src/dart/analysis/file_state.dart';
import 'package:analyzer/src/dart/sdk/sdk.dart';
import 'package:analyzer/src/generated/sdk.dart';
main() async {
PerformanceLog logger = new PerformanceLog(stdout);
// var byteStore = new MemoryByteStore();
ByteStore byteStore = new FileByteStore(
'/Users/scheglov/.dartServer/.analysis-driver', 1024 * 1024 * 1024);
AnalysisDriverScheduler scheduler = new AnalysisDriverScheduler(logger);
scheduler.start();
String defaultSdkPath = FolderBasedDartSdk
.defaultSdkDirectory(PhysicalResourceProvider.INSTANCE)
.path;
ContextBuilder contextBuilder = new ContextBuilder(
PhysicalResourceProvider.INSTANCE,
new DartSdkManager(defaultSdkPath, false),
null);
contextBuilder.performanceLog = logger;
contextBuilder.byteStore = byteStore;
contextBuilder.fileContentOverlay = new FileContentOverlay();
contextBuilder.analysisDriverScheduler = scheduler;
var driver = contextBuilder
.buildDriver('/Users/scheglov/Source/Dart/sdk.git/sdk/pkg/analyzer');
String testPath =
'/Users/scheglov/Source/Dart/sdk.git/sdk/pkg/analyzer/lib/src/generated/constant.dart';
for (int i = 0; i < 10; i++) {
var analysisResult = await driver.getResult(testPath);
print(analysisResult.unit.element);
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment