use of org.eclipse.n4js.validation.validators.flowgraphs.FlowValidator in project n4js by eclipse.
the class N4JSFlowgraphValidator method checkFlowGraphs.
/**
* Triggers all flow graph related validations
*/
@Check
public void checkFlowGraphs(Script script) {
// Note: The Flow Graph is NOT stored in the meta info cache. Hence, it is created here at use site.
// In case the its creation is moved to the N4JSPostProcessor, care about an increase in memory consumption.
N4JSFlowAnalyser flowAnalyzer = new N4JSFlowAnalyser(this::checkCancelled);
FlowValidator[] fValidators = { new DeadCodeValidator(keywordProvider), new UsedBeforeDeclaredValidator(), new NullUndefinedValidator(n4jsCore, findReferenceHelper), new MissingReturnOrThrowValidator(typeSystemHelper, jsVariantHelper) };
FlowAnalyser[] fAnalysers = new FlowAnalyser[fValidators.length];
for (int i = 0; i < fValidators.length; i++) {
fAnalysers[i] = fValidators[i].getFlowAnalyser();
}
flowAnalyzer.createGraphs(script);
flowAnalyzer.accept(fAnalysers);
String uriString = script.eResource().getURI().toString();
try (ClosableMeasurement m1 = dcFlowGraphs.getClosableMeasurement("flowGraphs_" + uriString);
ClosableMeasurement m2 = dcPostprocessing.getClosableMeasurement("createGraph_" + uriString)) {
for (FlowValidator fValidator : fValidators) {
fValidator.checkResults(this);
}
}
}
Aggregations