This was my attempt to create an in-memory-based AnalysisContext. But it doesn't work. In addition, I am using class I shouldn't be using according to the doc, like ContextLocator and ContextBuilder.
import 'package:analyzer/dart/analysis/analysis_context.dart';
import 'package:analyzer/dart/analysis/analysis_context_collection.dart';
import 'package:analyzer/dart/analysis/context_builder.dart';
import 'package:analyzer/dart/analysis/context_locator.dart';
import 'package:analyzer/dart/analysis/context_root.dart';
import 'package:analyzer/dart/analysis/results.dart';
import 'package:analyzer/dart/analysis/session.dart';
import 'package:analyzer/error/error.dart';
import 'package:analyzer/file_system/file_system.dart';
import 'package:analyzer/file_system/memory_file_system.dart';
import 'package:analyzer/src/dart/analysis/context_builder.dart';
Future<void> main() async {
final myCode = '''
void main() {
print('Hello, world!')
}
''';
final resourceProvider = MemoryResourceProvider();
final codeFile = resourceProvider.newFile('/my.dart', myCode);
print("path: " + codeFile.path);
final contextLocator = ContextLocator(resourceProvider: resourceProvider);
final contextRoot =
contextLocator.locateRoots(includedPaths: [codeFile.path]).first;
final contextBuilder = ContextBuilder(resourceProvider: resourceProvider);
final analysisContext =
contextBuilder.createContext(contextRoot: contextRoot);
final session = analysisContext.currentSession;
var issueCount = 0;
final errorsResult = await session.getErrors(codeFile.path);
if (errorsResult is ErrorsResult) {
for (final error in errorsResult.errors) {
if (error.errorCode.type != ErrorType.TODO) {
print(' \u001b[1m${error.source.shortName}\u001b[0m ${error.message}');
issueCount++;
}
}
}
}