d4t_formulas/.pub-cache/hosted/pub.dev/analyzer-7.7.1/example/ddd13.dart
Álvaro González 1d339653d5 feat: add formula data classes with strict JSON parsing
- Add VariableSpec class with magnitude field validation
- Add Formula class supporting multiple input/output variables
- Support d4rt_code as string or object with code field
- Add comprehensive tests for parsing and serialization
- Fix broken test import in pruebas_d4rt_test.dart

Follows README.md format requirements exactly
2025-08-21 17:15:00 +02:00

94 lines
2.8 KiB
Dart

import 'dart:io' as io;
import 'package:analyzer/file_system/overlay_file_system.dart';
import 'package:analyzer/file_system/physical_file_system.dart';
import 'package:analyzer/src/dart/analysis/analysis_context_collection.dart';
import 'package:analyzer/src/dart/analysis/byte_store.dart';
import 'package:analyzer/src/dart/analysis/performance_logger.dart';
import 'package:linter/src/rules.dart';
void main() async {
var resourceProvider = OverlayResourceProvider(
PhysicalResourceProvider.INSTANCE,
);
registerLintRules();
var byteStore = MemoryByteStore();
for (var i = 0; i < 1; i++) {
var libPath = '/Users/scheglov/dart/admin-portal/lib';
var collection = AnalysisContextCollectionImpl(
resourceProvider: resourceProvider,
includedPaths: [libPath],
byteStore: byteStore,
performanceLog: PerformanceLog(io.stdout),
);
var path = '$libPath/data/models/entities.dart';
var file = resourceProvider.getFile(path);
var baseContent = file.readAsStringSync();
var analysisContext = collection.contextFor(path);
{
await analysisContext.applyPendingFileChanges();
var analysisSession = analysisContext.currentSession;
var timer = Stopwatch()..start();
await analysisSession.getResolvedLibrary(path);
timer.stop();
await Future<Null>.delayed(const Duration(milliseconds: 100));
print('[Initial analysis][time: ${timer.elapsedMilliseconds} ms]');
}
{
var newContent = baseContent.replaceAll(
"String str = '';",
"String str = 'X';",
);
resourceProvider.setOverlay(
path,
content: newContent,
modificationStamp: 1,
);
analysisContext.changeFile(path);
await analysisContext.applyPendingFileChanges();
var analysisSession = analysisContext.currentSession;
var timer = Stopwatch()..start();
await analysisSession.getResolvedLibrary(path);
timer.stop();
await Future<Null>.delayed(const Duration(milliseconds: 100));
print('[Change method body][time: ${timer.elapsedMilliseconds} ms]');
}
{
var newContent = baseContent.replaceAll(
"String present(String activeLabel",
"String present2(String activeLabel",
);
resourceProvider.setOverlay(
path,
content: newContent,
modificationStamp: 2,
);
analysisContext.changeFile(path);
await analysisContext.applyPendingFileChanges();
var analysisSession = analysisContext.currentSession;
var timer = Stopwatch()..start();
await analysisSession.getResolvedLibrary(path);
timer.stop();
await Future<Null>.delayed(const Duration(milliseconds: 100));
print('[Change method name][time: ${timer.elapsedMilliseconds} ms]');
}
await collection.dispose();
}
}