Loading de.ugoe.cs.swe.T3Q/src/de/ugoe/cs/swe/T3Q/Analyzer.java +26 −86 Original line number Diff line number Diff line Loading @@ -13,39 +13,50 @@ import org.eclipse.xtext.validation.FeatureBasedDiagnostic; import com.google.common.base.Stopwatch; import de.ugoe.cs.swe.common.MiscTools; import de.ugoe.cs.swe.common.logging.LoggingInterface.LogLevel; import de.ugoe.cs.swe.common.logging.LoggingInterface; import de.ugoe.cs.swe.common.logging.LoggingInterface.MessageClass; import de.ugoe.cs.swe.validation.TTCN3StatisticsProvider; public class Analyzer implements Callable<String> { public class Analyzer implements Callable<TTCN3Output> { private final Resource resource; private final LoggingInterface logger; public Analyzer(Resource resource) { public Analyzer(Resource resource, LoggingInterface logger) { this.resource = resource; this.logger = logger; } private String analyze() { String output = ""; private TTCN3Output analyze() { final TTCN3Output output = new TTCN3Output(this.resource); final Stopwatch stopwatch = Stopwatch.createUnstarted(); stopwatch.start(); // validate the resource EcoreUtil.resolveAll(this.resource); validate(this.resource); EObject model = this.resource.getContents().get(0); org.eclipse.emf.common.util.Diagnostic diagnostic = null; diagnostic = Diagnostician.INSTANCE .validate(model); for (org.eclipse.emf.common.util.Diagnostic d : diagnostic.getChildren()) { output.getOutput().add((FeatureBasedDiagnostic) d); } // TODO: make this configurable for debug purposes for (Diagnostic d : this.resource.getErrors()) { TTCN3StatisticsProvider.getInstance().incrementCountUniversal(); // for (Diagnostic d : this.resource.getErrors()) { // TTCN3StatisticsProvider.getInstance().incrementCountUniversal(); // logger.logInformation(this.resource.getURI(), d.getLine(), d.getLine(), // MessageClass.UNIVERSAL, d.getMessage()); } for (Diagnostic d : this.resource.getWarnings()) { TTCN3StatisticsProvider.getInstance().incrementCountUniversal(); // } // for (Diagnostic d : this.resource.getWarnings()) { // TTCN3StatisticsProvider.getInstance().incrementCountUniversal(); // logger.logInformation(this.resource.getURI(), d.getLine(), d.getLine(), // MessageClass.UNIVERSAL, d.getMessage()); } // } stopwatch.stop(); System.out.println("Analyzing file: " + this.resource.getURI().devicePath().replaceFirst("///", "") + " took: " + '\n' + " ...done in " + stopwatch.elapsed(TimeUnit.MILLISECONDS) + " ms (" + MiscTools.secondsToString(stopwatch.elapsed(TimeUnit.SECONDS)) + " minutes)."); Loading @@ -53,79 +64,8 @@ public class Analyzer implements Callable<String> { return output; } private void validate(Resource resource) { EObject model = resource.getContents().get(0); org.eclipse.emf.common.util.Diagnostic diagnostic = null; diagnostic = Diagnostician.INSTANCE .validate(model); FeatureBasedDiagnostic featureDiagnostic = null; for (org.eclipse.emf.common.util.Diagnostic d : diagnostic .getChildren()) { switch (d.getSeverity()) { case org.eclipse.emf.common.util.Diagnostic.ERROR: featureDiagnostic = (FeatureBasedDiagnostic) d; // logger.logError(resource.getURI(), // Integer.parseInt(featureDiagnostic.getIssueData()[0]), // Integer.parseInt(featureDiagnostic.getIssueData()[1]), // MessageClass.valueOf(featureDiagnostic.getIssueCode()), // featureDiagnostic.getMessage()); break; case org.eclipse.emf.common.util.Diagnostic.WARNING: featureDiagnostic = (FeatureBasedDiagnostic) d; // logger.logWarning(resource.getURI(), // Integer.parseInt(featureDiagnostic.getIssueData()[0]), // Integer.parseInt(featureDiagnostic.getIssueData()[1]), // MessageClass.valueOf(featureDiagnostic.getIssueCode()), // featureDiagnostic.getMessage(), // featureDiagnostic.getIssueData()[2]); break; case org.eclipse.emf.common.util.Diagnostic.INFO: featureDiagnostic = (FeatureBasedDiagnostic) d; switch (LogLevel.valueOf(featureDiagnostic.getIssueData()[3])) { case INFORMATION: // logger.logInformation( // resource.getURI(), // Integer.parseInt(featureDiagnostic.getIssueData()[0]), // Integer.parseInt(featureDiagnostic.getIssueData()[1]), // MessageClass.valueOf(featureDiagnostic // .getIssueCode()), featureDiagnostic // .getMessage(), featureDiagnostic // .getIssueData()[2]); break; case FIXME: // logger.logFix( // resource.getURI(), // Integer.parseInt(featureDiagnostic.getIssueData()[0]), // Integer.parseInt(featureDiagnostic.getIssueData()[1]), // MessageClass.valueOf(featureDiagnostic // .getIssueCode()), featureDiagnostic // .getMessage(), featureDiagnostic // .getIssueData()[2]); break; case DEBUG: // logger.logDebug( // resource.getURI(), // Integer.parseInt(featureDiagnostic.getIssueData()[0]), // Integer.parseInt(featureDiagnostic.getIssueData()[1]), // MessageClass.valueOf(featureDiagnostic // .getIssueCode()), featureDiagnostic // .getMessage(), featureDiagnostic // .getIssueData()[2]); break; default: break; } break; default: break; } } } @Override public String call() throws Exception { public TTCN3Output call() throws Exception { return analyze(); } } de.ugoe.cs.swe.T3Q/src/de/ugoe/cs/swe/T3Q/TTCN3Output.java 0 → 100644 +26 −0 Original line number Diff line number Diff line package de.ugoe.cs.swe.T3Q; import java.util.List; import org.eclipse.emf.ecore.resource.Resource; import org.eclipse.xtext.validation.FeatureBasedDiagnostic; import com.google.common.collect.Lists; public class TTCN3Output { private final Resource resource; private final List<FeatureBasedDiagnostic> output; public TTCN3Output(final Resource resource) { this.resource = resource; this.output = Lists.newArrayList(); } public Resource getResource() { return resource; } public List<FeatureBasedDiagnostic> getOutput() { return output; } } de.ugoe.cs.swe.T3Q/src/de/ugoe/cs/swe/T3Q/TTCN3ResourceProvider.java +67 −6 Original line number Diff line number Diff line Loading @@ -140,14 +140,17 @@ public class TTCN3ResourceProvider { ArrayList<Analyzer> analyzer = new ArrayList<Analyzer>(); for (int i = 0; i < TTCN3GlobalScopeProvider.RESOURCES.size(); i++) { analyzer.add(new Analyzer(TTCN3GlobalScopeProvider.RESOURCES.get(i))); analyzer.add(new Analyzer(TTCN3GlobalScopeProvider.RESOURCES.get(i), logger)); } try { List<Future<String>> output = pool.invokeAll(analyzer); List<Future<TTCN3Output>> output = pool.invokeAll(analyzer); pool.shutdown(); for (Future<String> f : output) { String o = f.get(); System.out.println(o); for (Future<TTCN3Output> f : output) { TTCN3Output o = f.get(); System.out.println("Validation output of " + o.getResource().getURI().lastSegment()); for (FeatureBasedDiagnostic d : o.getOutput()) { printOutput(o.getResource(), d); } } } catch (InterruptedException | ExecutionException e) { // TODO Auto-generated catch block Loading Loading @@ -180,6 +183,64 @@ public class TTCN3ResourceProvider { } private void printOutput(Resource resource, FeatureBasedDiagnostic featureDiagnostic) { switch (featureDiagnostic.getSeverity()) { case org.eclipse.emf.common.util.Diagnostic.ERROR: logger.logError(resource.getURI(), Integer.parseInt(featureDiagnostic.getIssueData()[0]), Integer.parseInt(featureDiagnostic.getIssueData()[1]), MessageClass.valueOf(featureDiagnostic.getIssueCode()), featureDiagnostic.getMessage()); break; case org.eclipse.emf.common.util.Diagnostic.WARNING: logger.logWarning(resource.getURI(), Integer.parseInt(featureDiagnostic.getIssueData()[0]), Integer.parseInt(featureDiagnostic.getIssueData()[1]), MessageClass.valueOf(featureDiagnostic.getIssueCode()), featureDiagnostic.getMessage(), featureDiagnostic.getIssueData()[2]); break; case org.eclipse.emf.common.util.Diagnostic.INFO: switch (LogLevel.valueOf(featureDiagnostic.getIssueData()[3])) { case INFORMATION: logger.logInformation( resource.getURI(), Integer.parseInt(featureDiagnostic.getIssueData()[0]), Integer.parseInt(featureDiagnostic.getIssueData()[1]), MessageClass.valueOf(featureDiagnostic .getIssueCode()), featureDiagnostic .getMessage(), featureDiagnostic .getIssueData()[2]); break; case FIXME: logger.logFix( resource.getURI(), Integer.parseInt(featureDiagnostic.getIssueData()[0]), Integer.parseInt(featureDiagnostic.getIssueData()[1]), MessageClass.valueOf(featureDiagnostic .getIssueCode()), featureDiagnostic .getMessage(), featureDiagnostic .getIssueData()[2]); break; case DEBUG: logger.logDebug( resource.getURI(), Integer.parseInt(featureDiagnostic.getIssueData()[0]), Integer.parseInt(featureDiagnostic.getIssueData()[1]), MessageClass.valueOf(featureDiagnostic .getIssueCode()), featureDiagnostic .getMessage(), featureDiagnostic .getIssueData()[2]); break; default: break; } break; default: break; } } public void printStatistics() { if (activeProfile.isStatShowLOC()) Loading Loading
de.ugoe.cs.swe.T3Q/src/de/ugoe/cs/swe/T3Q/Analyzer.java +26 −86 Original line number Diff line number Diff line Loading @@ -13,39 +13,50 @@ import org.eclipse.xtext.validation.FeatureBasedDiagnostic; import com.google.common.base.Stopwatch; import de.ugoe.cs.swe.common.MiscTools; import de.ugoe.cs.swe.common.logging.LoggingInterface.LogLevel; import de.ugoe.cs.swe.common.logging.LoggingInterface; import de.ugoe.cs.swe.common.logging.LoggingInterface.MessageClass; import de.ugoe.cs.swe.validation.TTCN3StatisticsProvider; public class Analyzer implements Callable<String> { public class Analyzer implements Callable<TTCN3Output> { private final Resource resource; private final LoggingInterface logger; public Analyzer(Resource resource) { public Analyzer(Resource resource, LoggingInterface logger) { this.resource = resource; this.logger = logger; } private String analyze() { String output = ""; private TTCN3Output analyze() { final TTCN3Output output = new TTCN3Output(this.resource); final Stopwatch stopwatch = Stopwatch.createUnstarted(); stopwatch.start(); // validate the resource EcoreUtil.resolveAll(this.resource); validate(this.resource); EObject model = this.resource.getContents().get(0); org.eclipse.emf.common.util.Diagnostic diagnostic = null; diagnostic = Diagnostician.INSTANCE .validate(model); for (org.eclipse.emf.common.util.Diagnostic d : diagnostic.getChildren()) { output.getOutput().add((FeatureBasedDiagnostic) d); } // TODO: make this configurable for debug purposes for (Diagnostic d : this.resource.getErrors()) { TTCN3StatisticsProvider.getInstance().incrementCountUniversal(); // for (Diagnostic d : this.resource.getErrors()) { // TTCN3StatisticsProvider.getInstance().incrementCountUniversal(); // logger.logInformation(this.resource.getURI(), d.getLine(), d.getLine(), // MessageClass.UNIVERSAL, d.getMessage()); } for (Diagnostic d : this.resource.getWarnings()) { TTCN3StatisticsProvider.getInstance().incrementCountUniversal(); // } // for (Diagnostic d : this.resource.getWarnings()) { // TTCN3StatisticsProvider.getInstance().incrementCountUniversal(); // logger.logInformation(this.resource.getURI(), d.getLine(), d.getLine(), // MessageClass.UNIVERSAL, d.getMessage()); } // } stopwatch.stop(); System.out.println("Analyzing file: " + this.resource.getURI().devicePath().replaceFirst("///", "") + " took: " + '\n' + " ...done in " + stopwatch.elapsed(TimeUnit.MILLISECONDS) + " ms (" + MiscTools.secondsToString(stopwatch.elapsed(TimeUnit.SECONDS)) + " minutes)."); Loading @@ -53,79 +64,8 @@ public class Analyzer implements Callable<String> { return output; } private void validate(Resource resource) { EObject model = resource.getContents().get(0); org.eclipse.emf.common.util.Diagnostic diagnostic = null; diagnostic = Diagnostician.INSTANCE .validate(model); FeatureBasedDiagnostic featureDiagnostic = null; for (org.eclipse.emf.common.util.Diagnostic d : diagnostic .getChildren()) { switch (d.getSeverity()) { case org.eclipse.emf.common.util.Diagnostic.ERROR: featureDiagnostic = (FeatureBasedDiagnostic) d; // logger.logError(resource.getURI(), // Integer.parseInt(featureDiagnostic.getIssueData()[0]), // Integer.parseInt(featureDiagnostic.getIssueData()[1]), // MessageClass.valueOf(featureDiagnostic.getIssueCode()), // featureDiagnostic.getMessage()); break; case org.eclipse.emf.common.util.Diagnostic.WARNING: featureDiagnostic = (FeatureBasedDiagnostic) d; // logger.logWarning(resource.getURI(), // Integer.parseInt(featureDiagnostic.getIssueData()[0]), // Integer.parseInt(featureDiagnostic.getIssueData()[1]), // MessageClass.valueOf(featureDiagnostic.getIssueCode()), // featureDiagnostic.getMessage(), // featureDiagnostic.getIssueData()[2]); break; case org.eclipse.emf.common.util.Diagnostic.INFO: featureDiagnostic = (FeatureBasedDiagnostic) d; switch (LogLevel.valueOf(featureDiagnostic.getIssueData()[3])) { case INFORMATION: // logger.logInformation( // resource.getURI(), // Integer.parseInt(featureDiagnostic.getIssueData()[0]), // Integer.parseInt(featureDiagnostic.getIssueData()[1]), // MessageClass.valueOf(featureDiagnostic // .getIssueCode()), featureDiagnostic // .getMessage(), featureDiagnostic // .getIssueData()[2]); break; case FIXME: // logger.logFix( // resource.getURI(), // Integer.parseInt(featureDiagnostic.getIssueData()[0]), // Integer.parseInt(featureDiagnostic.getIssueData()[1]), // MessageClass.valueOf(featureDiagnostic // .getIssueCode()), featureDiagnostic // .getMessage(), featureDiagnostic // .getIssueData()[2]); break; case DEBUG: // logger.logDebug( // resource.getURI(), // Integer.parseInt(featureDiagnostic.getIssueData()[0]), // Integer.parseInt(featureDiagnostic.getIssueData()[1]), // MessageClass.valueOf(featureDiagnostic // .getIssueCode()), featureDiagnostic // .getMessage(), featureDiagnostic // .getIssueData()[2]); break; default: break; } break; default: break; } } } @Override public String call() throws Exception { public TTCN3Output call() throws Exception { return analyze(); } }
de.ugoe.cs.swe.T3Q/src/de/ugoe/cs/swe/T3Q/TTCN3Output.java 0 → 100644 +26 −0 Original line number Diff line number Diff line package de.ugoe.cs.swe.T3Q; import java.util.List; import org.eclipse.emf.ecore.resource.Resource; import org.eclipse.xtext.validation.FeatureBasedDiagnostic; import com.google.common.collect.Lists; public class TTCN3Output { private final Resource resource; private final List<FeatureBasedDiagnostic> output; public TTCN3Output(final Resource resource) { this.resource = resource; this.output = Lists.newArrayList(); } public Resource getResource() { return resource; } public List<FeatureBasedDiagnostic> getOutput() { return output; } }
de.ugoe.cs.swe.T3Q/src/de/ugoe/cs/swe/T3Q/TTCN3ResourceProvider.java +67 −6 Original line number Diff line number Diff line Loading @@ -140,14 +140,17 @@ public class TTCN3ResourceProvider { ArrayList<Analyzer> analyzer = new ArrayList<Analyzer>(); for (int i = 0; i < TTCN3GlobalScopeProvider.RESOURCES.size(); i++) { analyzer.add(new Analyzer(TTCN3GlobalScopeProvider.RESOURCES.get(i))); analyzer.add(new Analyzer(TTCN3GlobalScopeProvider.RESOURCES.get(i), logger)); } try { List<Future<String>> output = pool.invokeAll(analyzer); List<Future<TTCN3Output>> output = pool.invokeAll(analyzer); pool.shutdown(); for (Future<String> f : output) { String o = f.get(); System.out.println(o); for (Future<TTCN3Output> f : output) { TTCN3Output o = f.get(); System.out.println("Validation output of " + o.getResource().getURI().lastSegment()); for (FeatureBasedDiagnostic d : o.getOutput()) { printOutput(o.getResource(), d); } } } catch (InterruptedException | ExecutionException e) { // TODO Auto-generated catch block Loading Loading @@ -180,6 +183,64 @@ public class TTCN3ResourceProvider { } private void printOutput(Resource resource, FeatureBasedDiagnostic featureDiagnostic) { switch (featureDiagnostic.getSeverity()) { case org.eclipse.emf.common.util.Diagnostic.ERROR: logger.logError(resource.getURI(), Integer.parseInt(featureDiagnostic.getIssueData()[0]), Integer.parseInt(featureDiagnostic.getIssueData()[1]), MessageClass.valueOf(featureDiagnostic.getIssueCode()), featureDiagnostic.getMessage()); break; case org.eclipse.emf.common.util.Diagnostic.WARNING: logger.logWarning(resource.getURI(), Integer.parseInt(featureDiagnostic.getIssueData()[0]), Integer.parseInt(featureDiagnostic.getIssueData()[1]), MessageClass.valueOf(featureDiagnostic.getIssueCode()), featureDiagnostic.getMessage(), featureDiagnostic.getIssueData()[2]); break; case org.eclipse.emf.common.util.Diagnostic.INFO: switch (LogLevel.valueOf(featureDiagnostic.getIssueData()[3])) { case INFORMATION: logger.logInformation( resource.getURI(), Integer.parseInt(featureDiagnostic.getIssueData()[0]), Integer.parseInt(featureDiagnostic.getIssueData()[1]), MessageClass.valueOf(featureDiagnostic .getIssueCode()), featureDiagnostic .getMessage(), featureDiagnostic .getIssueData()[2]); break; case FIXME: logger.logFix( resource.getURI(), Integer.parseInt(featureDiagnostic.getIssueData()[0]), Integer.parseInt(featureDiagnostic.getIssueData()[1]), MessageClass.valueOf(featureDiagnostic .getIssueCode()), featureDiagnostic .getMessage(), featureDiagnostic .getIssueData()[2]); break; case DEBUG: logger.logDebug( resource.getURI(), Integer.parseInt(featureDiagnostic.getIssueData()[0]), Integer.parseInt(featureDiagnostic.getIssueData()[1]), MessageClass.valueOf(featureDiagnostic .getIssueCode()), featureDiagnostic .getMessage(), featureDiagnostic .getIssueData()[2]); break; default: break; } break; default: break; } } public void printStatistics() { if (activeProfile.isStatShowLOC()) Loading