Search in sources :

Example 26 with Module

use of org.eclipse.titan.designer.AST.Module in project titan.EclipsePlug-ins by eclipse.

the class UnusedImportsProject method process.

@Override
protected void process(final IProject project, final Problems problems) {
    TITANDebugConsole.println("Unused import");
    final ProjectSourceParser projectSourceParser = GlobalParser.getProjectSourceParser(project);
    final Set<String> knownModuleNames = projectSourceParser.getKnownModuleNames();
    final List<Module> modules = new ArrayList<Module>();
    for (final String moduleName : new TreeSet<String>(knownModuleNames)) {
        Module module = projectSourceParser.getModuleByName(moduleName);
        modules.add(module);
    }
    final Set<Module> setOfImportedModules = new HashSet<Module>();
    for (Module module : modules) {
        setOfImportedModules.clear();
        setOfImportedModules.addAll(module.getImportedModules());
        ImportsCheck check = new ImportsCheck();
        module.accept(check);
        setOfImportedModules.removeAll(check.getModules());
        if (module instanceof TTCN3Module) {
            for (ImportModule mod : ((TTCN3Module) module).getImports()) {
                for (Module m : setOfImportedModules) {
                    if (m.getIdentifier().equals(mod.getIdentifier())) {
                        problems.report(mod.getIdentifier().getLocation(), "Possibly unused importation");
                    }
                }
            }
        } else {
            ModuleImportsCheck importsCheck = new ModuleImportsCheck();
            module.accept(importsCheck);
            for (ModuleImportation im : importsCheck.getImports()) {
                for (Module m : setOfImportedModules) {
                    if (m.getIdentifier().equals(im.getIdentifier())) {
                        problems.report(im.getIdentifier().getLocation(), "Possibly unused importation");
                    }
                }
            }
        }
    }
}
Also used : TTCN3Module(org.eclipse.titan.designer.AST.TTCN3.definitions.TTCN3Module) ArrayList(java.util.ArrayList) ProjectSourceParser(org.eclipse.titan.designer.parsers.ProjectSourceParser) ImportModule(org.eclipse.titan.designer.AST.TTCN3.definitions.ImportModule) TreeSet(java.util.TreeSet) ImportModule(org.eclipse.titan.designer.AST.TTCN3.definitions.ImportModule) Module(org.eclipse.titan.designer.AST.Module) TTCN3Module(org.eclipse.titan.designer.AST.TTCN3.definitions.TTCN3Module) HashSet(java.util.HashSet) ModuleImportation(org.eclipse.titan.designer.AST.ModuleImportation)

Example 27 with Module

use of org.eclipse.titan.designer.AST.Module in project titan.EclipsePlug-ins by eclipse.

the class LanguageMixing method process.

@Override
protected void process(IProject project, Problems problems) {
    TITANDebugConsole.println("Language mixing called");
    final ProjectSourceParser projectSourceParser = GlobalParser.getProjectSourceParser(project);
    final Set<String> knownModuleNames = projectSourceParser.getKnownModuleNames();
    final List<TTCN3Module> modules = new ArrayList<TTCN3Module>();
    for (final String moduleName : new TreeSet<String>(knownModuleNames)) {
        Module module = projectSourceParser.getModuleByName(moduleName);
        if (module instanceof TTCN3Module) {
            modules.add((TTCN3Module) module);
        }
    }
    Collections.sort(modules, new Comparator<TTCN3Module>() {

        @Override
        public int compare(final TTCN3Module o1, final TTCN3Module o2) {
            return o1.getName().compareTo(o2.getName());
        }
    });
    String lastLanguage = null;
    TTCN3Module lastModule = null;
    for (TTCN3Module module : modules) {
        ArrayList<String> languageSpecifications = module.getLanguageSpecifictions();
        if (languageSpecifications != null && languageSpecifications.size() > 0) {
            String tempLanguage = languageSpecifications.get(0);
            if (tempLanguage != null) {
                if (lastLanguage == null) {
                    lastLanguage = tempLanguage;
                    lastModule = module;
                } else if (!tempLanguage.equals(lastLanguage)) {
                    problems.report(module.getIdentifier().getLocation(), MessageFormat.format(ERR_MSG, project.getName(), module.getName(), tempLanguage, lastModule.getName(), lastLanguage));
                }
            }
        }
    }
}
Also used : TTCN3Module(org.eclipse.titan.designer.AST.TTCN3.definitions.TTCN3Module) TreeSet(java.util.TreeSet) ArrayList(java.util.ArrayList) Module(org.eclipse.titan.designer.AST.Module) TTCN3Module(org.eclipse.titan.designer.AST.TTCN3.definitions.TTCN3Module) ProjectSourceParser(org.eclipse.titan.designer.parsers.ProjectSourceParser)

Example 28 with Module

use of org.eclipse.titan.designer.AST.Module in project titan.EclipsePlug-ins by eclipse.

the class EffCouplingDetector method visit.

@Override
public int visit(final IVisitableNode node) {
    if (node instanceof Reference) {
        final Reference reference = (Reference) node;
        final Assignment assignment = reference.getRefdAssignment(CompilationTimeStamp.getBaseTimestamp(), false);
        if (assignment != null) {
            final Module referencedModule = assignment.getMyScope().getModuleScope();
            if (!ownModule.equals(referencedModule)) {
                efferentCoupling.get(ownModule).add(assignment);
            }
        }
    }
    return V_CONTINUE;
}
Also used : Assignment(org.eclipse.titan.designer.AST.Assignment) Reference(org.eclipse.titan.designer.AST.Reference) Module(org.eclipse.titan.designer.AST.Module)

Example 29 with Module

use of org.eclipse.titan.designer.AST.Module in project titan.EclipsePlug-ins by eclipse.

the class MissingFriend method process.

@Override
public void process(final IVisitableNode node, final Problems problems) {
    if (node instanceof FriendModule) {
        final FriendModule s = (FriendModule) node;
        final Identifier identifier = s.getIdentifier();
        final ProjectSourceParser parser = GlobalParser.getProjectSourceParser(s.getProject());
        if (parser != null && identifier != null) {
            final Module referredModule = parser.getModuleByName(identifier.getName());
            if (referredModule == null) {
                final String msg = MessageFormat.format(MISSING_MODULE, identifier.getDisplayName());
                problems.report(identifier.getLocation(), msg);
            }
        }
    }
}
Also used : FriendModule(org.eclipse.titan.designer.AST.TTCN3.definitions.FriendModule) Identifier(org.eclipse.titan.designer.AST.Identifier) Module(org.eclipse.titan.designer.AST.Module) FriendModule(org.eclipse.titan.designer.AST.TTCN3.definitions.FriendModule) ProjectSourceParser(org.eclipse.titan.designer.parsers.ProjectSourceParser)

Example 30 with Module

use of org.eclipse.titan.designer.AST.Module in project titan.EclipsePlug-ins by eclipse.

the class AMInEnvy method measure.

@Override
public Number measure(final MetricData data, final Def_Altstep altstep) {
    final Counter count = new Counter(0);
    final Module myModule = altstep.getMyScope().getModuleScope();
    altstep.accept(new InternalFeatureEnvyDetector(myModule, count));
    return count.val();
}
Also used : Counter(org.eclipse.titanium.metrics.visitors.Counter) InternalFeatureEnvyDetector(org.eclipse.titanium.metrics.visitors.InternalFeatureEnvyDetector) Module(org.eclipse.titan.designer.AST.Module)

Aggregations

Module (org.eclipse.titan.designer.AST.Module)130 ProjectSourceParser (org.eclipse.titan.designer.parsers.ProjectSourceParser)51 ArrayList (java.util.ArrayList)37 TTCN3Module (org.eclipse.titan.designer.AST.TTCN3.definitions.TTCN3Module)36 IFile (org.eclipse.core.resources.IFile)32 Assignment (org.eclipse.titan.designer.AST.Assignment)22 Identifier (org.eclipse.titan.designer.AST.Identifier)21 Location (org.eclipse.titan.designer.AST.Location)16 Reference (org.eclipse.titan.designer.AST.Reference)16 ImportModule (org.eclipse.titan.designer.AST.TTCN3.definitions.ImportModule)16 HashMap (java.util.HashMap)14 List (java.util.List)13 WorkspaceJob (org.eclipse.core.resources.WorkspaceJob)11 IPreferencesService (org.eclipse.core.runtime.preferences.IPreferencesService)11 IProject (org.eclipse.core.resources.IProject)10 IResource (org.eclipse.core.resources.IResource)10 MultiTextEdit (org.eclipse.text.edits.MultiTextEdit)10 Assignments (org.eclipse.titan.designer.AST.Assignments)9 Scope (org.eclipse.titan.designer.AST.Scope)9 TextSelection (org.eclipse.jface.text.TextSelection)8