Loading de.ugoe.cs.swe.T3Q/T3Q (sample).launch +1 −1 Original line number Diff line number Diff line Loading @@ -18,7 +18,7 @@ <booleanAttribute key="org.eclipse.jdt.launching.ATTR_USE_START_ON_FIRST_THREAD" value="true"/> <stringAttribute key="org.eclipse.jdt.launching.MAIN_TYPE" value="de.ugoe.cs.swe.T3Q.T3Q"/> <stringAttribute key="org.eclipse.jdt.launching.MODULE_NAME" value="de.ugoe.cs.swe.T3Q"/> <stringAttribute key="org.eclipse.jdt.launching.PROGRAM_ARGUMENTS" value="--config config/t3q.cfg --profile defaultProfile"/> <stringAttribute key="org.eclipse.jdt.launching.PROGRAM_ARGUMENTS" value="--config config/t3q.cfg --profile defaultProfile C:\Users\leofa\Documents\_t3q\t3q-resources --analyze-usage"/> <stringAttribute key="org.eclipse.jdt.launching.PROJECT_ATTR" value="de.ugoe.cs.swe.T3Q"/> <stringAttribute key="org.eclipse.jdt.launching.VM_ARGUMENTS" value="-Xms256m -Xmx4g"/> <stringAttribute key="yk-options" value=" additional-options2=onexit\=snapshot "/> Loading de.ugoe.cs.swe.T3Q/src/de/ugoe/cs/swe/T3Q/UsageAnalyzer.java +27 −4 Original line number Diff line number Diff line Loading @@ -2,6 +2,8 @@ package de.ugoe.cs.swe.T3Q; import java.util.List; import java.util.Map; import java.util.Set; import java.util.HashMap; import java.util.concurrent.Callable; import java.util.concurrent.TimeUnit; import java.util.stream.Collectors; Loading @@ -20,6 +22,8 @@ import de.ugoe.cs.swe.tTCN3.FunctionDef; import de.ugoe.cs.swe.tTCN3.ModuleDefinition; import de.ugoe.cs.swe.tTCN3.TTCN3File; import de.ugoe.cs.swe.tTCN3.TTCN3Module; //TODO: inefficient, but I currently don't want to change imports all the time import de.ugoe.cs.swe.tTCN3.*; public class UsageAnalyzer implements Callable<TTCN3Usage> { private final Resource resource; Loading @@ -43,15 +47,34 @@ public class UsageAnalyzer implements Callable<TTCN3Usage> { EObject model = this.resource.getContents().get(0); //collect basic stats (keep in mind multi-threaded processing, need to collect output in a file or in output), //for initial basic testing single-threaded mode should provide first results System.out.println("Module,FunctionDef,AltConstruct,..."); System.out.println("Module, FunctionDef, AltConstruct, RecordDefNamed, ComponentDef, ConstDef"); for (TTCN3Module module : ((TTCN3File)model).getModules()) { //immediate output (will look weird if single-core is not activated) //TODO: count different constructs (naive approach), e.g. System.out.println(module.getName() + ", " +EcoreUtil2.getAllContentsOfType(module, FunctionDef.class).size() + ", " +EcoreUtil2.getAllContentsOfType(module, AltConstruct.class).size() + ",..." + ", " +EcoreUtil2.getAllContentsOfType(module, RecordDefNamed.class).size() + ", " +EcoreUtil2.getAllContentsOfType(module, ComponentDef.class).size() + ", " +EcoreUtil2.getAllContentsOfType(module, ConstDef.class).size() ); //repeated counting inefficient, refactor into variables later if(EcoreUtil2.getAllContentsOfType(module, ConstDef.class).size() > 0) { Map<String, Integer> constants = new HashMap<String, Integer>(); for(ConstDef constant : EcoreUtil2.getAllContentsOfType(module, ConstDef.class)) { String name = constant.getType().getPre(); if(constants.containsKey(name)) { constants.replace(name, constants.get(name) + 1); } else { constants.put(name, 1); } } System.out.println("Printing types of constants:"); Set<String> names = constants.keySet(); for(String name : names) { System.out.println(name + ": " + constants.get(name)); } } //TODO: very inefficient, better to traverse tree once, e.g. List<ModuleDefinition> definitions = EcoreUtil2.getAllContentsOfType(module, ModuleDefinition.class); Loading Loading
de.ugoe.cs.swe.T3Q/T3Q (sample).launch +1 −1 Original line number Diff line number Diff line Loading @@ -18,7 +18,7 @@ <booleanAttribute key="org.eclipse.jdt.launching.ATTR_USE_START_ON_FIRST_THREAD" value="true"/> <stringAttribute key="org.eclipse.jdt.launching.MAIN_TYPE" value="de.ugoe.cs.swe.T3Q.T3Q"/> <stringAttribute key="org.eclipse.jdt.launching.MODULE_NAME" value="de.ugoe.cs.swe.T3Q"/> <stringAttribute key="org.eclipse.jdt.launching.PROGRAM_ARGUMENTS" value="--config config/t3q.cfg --profile defaultProfile"/> <stringAttribute key="org.eclipse.jdt.launching.PROGRAM_ARGUMENTS" value="--config config/t3q.cfg --profile defaultProfile C:\Users\leofa\Documents\_t3q\t3q-resources --analyze-usage"/> <stringAttribute key="org.eclipse.jdt.launching.PROJECT_ATTR" value="de.ugoe.cs.swe.T3Q"/> <stringAttribute key="org.eclipse.jdt.launching.VM_ARGUMENTS" value="-Xms256m -Xmx4g"/> <stringAttribute key="yk-options" value=" additional-options2=onexit\=snapshot "/> Loading
de.ugoe.cs.swe.T3Q/src/de/ugoe/cs/swe/T3Q/UsageAnalyzer.java +27 −4 Original line number Diff line number Diff line Loading @@ -2,6 +2,8 @@ package de.ugoe.cs.swe.T3Q; import java.util.List; import java.util.Map; import java.util.Set; import java.util.HashMap; import java.util.concurrent.Callable; import java.util.concurrent.TimeUnit; import java.util.stream.Collectors; Loading @@ -20,6 +22,8 @@ import de.ugoe.cs.swe.tTCN3.FunctionDef; import de.ugoe.cs.swe.tTCN3.ModuleDefinition; import de.ugoe.cs.swe.tTCN3.TTCN3File; import de.ugoe.cs.swe.tTCN3.TTCN3Module; //TODO: inefficient, but I currently don't want to change imports all the time import de.ugoe.cs.swe.tTCN3.*; public class UsageAnalyzer implements Callable<TTCN3Usage> { private final Resource resource; Loading @@ -43,15 +47,34 @@ public class UsageAnalyzer implements Callable<TTCN3Usage> { EObject model = this.resource.getContents().get(0); //collect basic stats (keep in mind multi-threaded processing, need to collect output in a file or in output), //for initial basic testing single-threaded mode should provide first results System.out.println("Module,FunctionDef,AltConstruct,..."); System.out.println("Module, FunctionDef, AltConstruct, RecordDefNamed, ComponentDef, ConstDef"); for (TTCN3Module module : ((TTCN3File)model).getModules()) { //immediate output (will look weird if single-core is not activated) //TODO: count different constructs (naive approach), e.g. System.out.println(module.getName() + ", " +EcoreUtil2.getAllContentsOfType(module, FunctionDef.class).size() + ", " +EcoreUtil2.getAllContentsOfType(module, AltConstruct.class).size() + ",..." + ", " +EcoreUtil2.getAllContentsOfType(module, RecordDefNamed.class).size() + ", " +EcoreUtil2.getAllContentsOfType(module, ComponentDef.class).size() + ", " +EcoreUtil2.getAllContentsOfType(module, ConstDef.class).size() ); //repeated counting inefficient, refactor into variables later if(EcoreUtil2.getAllContentsOfType(module, ConstDef.class).size() > 0) { Map<String, Integer> constants = new HashMap<String, Integer>(); for(ConstDef constant : EcoreUtil2.getAllContentsOfType(module, ConstDef.class)) { String name = constant.getType().getPre(); if(constants.containsKey(name)) { constants.replace(name, constants.get(name) + 1); } else { constants.put(name, 1); } } System.out.println("Printing types of constants:"); Set<String> names = constants.keySet(); for(String name : names) { System.out.println(name + ": " + constants.get(name)); } } //TODO: very inefficient, better to traverse tree once, e.g. List<ModuleDefinition> definitions = EcoreUtil2.getAllContentsOfType(module, ModuleDefinition.class); Loading