Commit 1c787c39 authored by Daniel Honsel's avatar Daniel Honsel
Browse files

basic implementation of checkNoUnusedImports

parent 886cdb95
Loading
Loading
Loading
Loading
+18 −4
Original line number Diff line number Diff line
@@ -60,6 +60,10 @@ public class TTCN3GlobalScopeProvider extends AbstractGlobalScopeProvider {
		return getImportedScope(resource, reference);
	}
	
	protected IScope getImportedScope(final Resource resource) {
		return getImportedScope(resource, null);
	}
	
	protected IScope getImportedScope(final Resource resource, final EReference reference) {
		List<String> importsString = getImports(resource);
		List<IEObjectDescription> objects = Lists.newArrayList();
@@ -138,15 +142,21 @@ public class TTCN3GlobalScopeProvider extends AbstractGlobalScopeProvider {
						}
						// add exported objects to import list
						if (TTCN3StatisticsProvider.getInstance().isParsingCompleted() && module != null && objects.size() > 0) {
							ImportData m = new ImportData(((TTCN3Module) module.getEObjectOrProxy()).getName(), null);
							TTCN3Module importedModule = (TTCN3Module) module.getEObjectOrProxy();
							ImportData m = new ImportData(importedModule.getName(), null);
							for (ImportData d : imports.get(resource)) {
								if (d.equals(m))
								if (d.equals(m)) {
									d.getExportedObjects().addAll(objects);
									d.setModule(importedModule);
								}
							}
						}
					}
				}
			}
			
			if (reference == null)
				return null;
			
			IScope scope = MultimapBasedScope.createScope(IScope.NULLSCOPE, objects, isIgnoreCase(reference));
			if (TTCN3StatisticsProvider.getInstance().isParsingCompleted()) {
@@ -198,6 +208,10 @@ public class TTCN3GlobalScopeProvider extends AbstractGlobalScopeProvider {
		if (imports.containsKey(resource)) {
			return imports.get(resource);
		} else {
			getImportedScope(resource);
			if (imports.containsKey(resource)) {
				return imports.get(resource);
			}
			return Lists.newArrayList();
		}
	}
+34 −1
Original line number Diff line number Diff line
@@ -77,6 +77,7 @@ import org.eclipse.xtext.scoping.IGlobalScopeProvider
import com.google.inject.Inject
import de.ugoe.cs.swe.scoping.TTCN3GlobalScopeProvider
import de.ugoe.cs.swe.scoping.ImportData
import java.util.Set

class CheckDefinitionComeFirstParameter {
	public boolean hasOtherDefinitions
@@ -1045,7 +1046,39 @@ class CodeStyleValidator extends AbstractDeclarativeValidator {
		
		val List<ImportData> data = scopeProvider.importedObjects(module.eResource);
		
		//TODO: implement validations
		for (d : data) {
			if (d.module == null) {
				TTCN3StatisticsProvider.getInstance.incrementCountStyle
				val message = "Imported module \"" + d.importDef.name + "\" cannot be resolved!"
				val INode node = NodeModelUtils.getNode(d.importDef)
				warning(
					message,
					null,
					MessageClass.STYLE.toString,
					node.startLine.toString,
					node.endLine.toString,
					"6.18, " + MiscTools.getMethodName()
				);				
			}
			
			val Set<EObject> target = newHashSet(d.exportedObjects.map[getEObjectOrProxy]);
			var boolean found = module.isReferenced2(target)
			
			if (!found && d.module != null) {
				TTCN3StatisticsProvider.getInstance.incrementCountStyle
				val message = "No definitions from imported module \"" + d.importDef.name + "\" are ever used!"
				val INode node = NodeModelUtils.getNode(d.importDef)
				warning(
					message,
					null,
					MessageClass.STYLE.toString,
					node.startLine.toString,
					node.endLine.toString,
					"6.18, " + MiscTools.getMethodName()
				);				
			}
			
		}
	}	
	
	override register(EValidatorRegistrar registrar) {