analyzeSource method
In-memory analysis for unit testing and IDE integration.
Implementation
Future<DataFlowResult> analyzeSource({
required String sourceCode,
required int startLine,
required int endLine,
String methodName = '_extracted',
}) async {
final tempDir = await Directory.systemTemp.createTemp('data_flow_test_');
try {
final tempFile = File(p.join(tempDir.path, 'snippet.dart'));
await tempFile.writeAsString(sourceCode);
final result = await analyzeFile(
filePath: tempFile.path,
startLine: startLine,
endLine: endLine,
methodName: methodName,
);
return DataFlowResult(
filePath: 'snippet.dart',
startLine: result.startLine,
endLine: result.endLine,
enclosingDeclaration: result.enclosingDeclaration,
inputs: result.inputs,
mutations: result.mutations,
outputs: result.outputs,
escapes: result.escapes,
suggestedSignature: result.suggestedSignature,
isCleanlyExtractable: result.isCleanlyExtractable,
);
} finally {
if (tempDir.existsSync()) {
await tempDir.delete(recursive: true);
}
}
}