Commit 6599d02f authored by Daniel Honsel's avatar Daniel Honsel
Browse files

improved naming conventions

parent 78199e0f
Loading
Loading
Loading
Loading
+74 −62
Original line number Diff line number Diff line
@@ -60,19 +60,19 @@ public class NamingConventionsValidator extends AbstractDeclarativeValidator {
	@Check
	def checkModuleName(TTCN3Module module) {
		val regExp = activeProfile.namingConventionsConfig.moduleRegExp;
		module.checkIdentifierForNamingConventionCompliance(regExp, "Module")
		module.checkIdentifierForNamingConventionCompliance(regExp, "Module", true)
	}

	@Check
	def checkFunctionName(FunctionDef function) {
		val regExp = activeProfile.namingConventionsConfig.functionRegExp;
		function.checkIdentifierForNamingConventionCompliance(regExp, "Function")
		function.checkIdentifierForNamingConventionCompliance(regExp, "Function", false)
	}

	@Check
	def checkExtFunctionName(ExtFunctionDef function) {
		val regExp = activeProfile.namingConventionsConfig.extFunctionRegExp;
		function.checkIdentifierForNamingConventionCompliance(regExp, "External Function")
		function.checkIdentifierForNamingConventionCompliance(regExp, "ExtFunction", false)
	}

	@Check
@@ -87,7 +87,7 @@ public class NamingConventionsValidator extends AbstractDeclarativeValidator {
			message = "Local Constant"
			regExp = activeProfile.namingConventionsConfig.localConstantRegExp
		}
		const.checkIdentifierForNamingConventionCompliance(regExp, message)
		const.checkIdentifierForNamingConventionCompliance(regExp, message, false)
	}

	 @Check
@@ -102,124 +102,123 @@ public class NamingConventionsValidator extends AbstractDeclarativeValidator {
	@Check
	def checkAltstepName(AltstepDef altstep) {
		val regExp = activeProfile.namingConventionsConfig.altstepRegExp;
		altstep.checkIdentifierForNamingConventionCompliance(regExp, "Altstep")
		altstep.checkIdentifierForNamingConventionCompliance(regExp, "Altstep", false)
	}

	@Check
	def checkGroupName(GroupDef group) {
		val regExp = activeProfile.namingConventionsConfig.groupRegExp;
		group.checkIdentifierForNamingConventionCompliance(regExp, "Group")
		group.checkIdentifierForNamingConventionCompliance(regExp, "Group", false)
	}

	@Check
	def checkModuleParameterName(ModuleParameter moduleParameter) {
		val regExp = activeProfile.namingConventionsConfig.moduleParameterRegExp;
		moduleParameter.checkIdentifierForNamingConventionCompliance(regExp, "ModuleParameter")
		moduleParameter.checkIdentifierForNamingConventionCompliance(regExp, "ModuleParameter", false)
	}

	@Check
	def checkTestcaseName(TestcaseDef testcase) {
		val regExp = activeProfile.namingConventionsConfig.testcaseRegExp;
		testcase.checkIdentifierForNamingConventionCompliance(regExp, "Testcase")
		testcase.checkIdentifierForNamingConventionCompliance(regExp, "Testcase", false)
	}

	@Check
	def checkTestcaseName(SignatureDef signature) {
		val regExp = activeProfile.namingConventionsConfig.signatureTemplateRegExp;
		signature.checkIdentifierForNamingConventionCompliance(regExp, "SignatureTemplate")
		signature.checkIdentifierForNamingConventionCompliance(regExp, "SignatureTemplate", false)
	}

	@Check
	def checkTestcaseName(FormalValuePar parameter) {
		val regExp = activeProfile.namingConventionsConfig.formalParameterRegExp;
		parameter.checkIdentifierForNamingConventionCompliance(regExp, "FormalParameter")
		parameter.checkIdentifierForNamingConventionCompliance(regExp, "FormalParameter", false)
	}

	@Check
	def checkTestcaseName(FormalPortPar parameter) {
		val regExp = activeProfile.namingConventionsConfig.formalParameterRegExp;
		parameter.checkIdentifierForNamingConventionCompliance(regExp, "FormalParameter")
		parameter.checkIdentifierForNamingConventionCompliance(regExp, "FormalParameter", false)
	}

	@Check
	def checkTestcaseName(FormalTemplatePar parameter) {
		val regExp = activeProfile.namingConventionsConfig.formalParameterRegExp;
		parameter.checkIdentifierForNamingConventionCompliance(regExp, "FormalParameter")
		parameter.checkIdentifierForNamingConventionCompliance(regExp, "FormalParameter", false)
	}

	@Check
	def checkTestcaseName(FormalTimerPar parameter) {
		val regExp = activeProfile.namingConventionsConfig.formalParameterRegExp;
		parameter.checkIdentifierForNamingConventionCompliance(regExp, "FormalParameter")
		parameter.checkIdentifierForNamingConventionCompliance(regExp, "FormalParameter", false)
	}

	@Check
	def checkEnumeratedValueName(Enumeration enumeratedValue) {
		val regExp = activeProfile.namingConventionsConfig.enumeratedValueRegExp;
		enumeratedValue.checkIdentifierForNamingConventionCompliance(regExp, "EnumeratedValue")
		enumeratedValue.checkIdentifierForNamingConventionCompliance(regExp, "EnumeratedValue", false)
	}

	@Check
	def checkSubTypeValueName(SubTypeDefNamed dataType) {
		val regExp = activeProfile.namingConventionsConfig.dataTypeRegExp;
		dataType.checkIdentifierForNamingConventionCompliance(regExp, "DataType")
		dataType.checkIdentifierForNamingConventionCompliance(regExp, "DataType", false)
	}

	@Check
	def checkRecordOfTypeName(RecordOfDefNamed dataType) {
		val regExp = activeProfile.namingConventionsConfig.dataTypeRegExp;
		dataType.checkIdentifierForNamingConventionCompliance(regExp, "DataType")
		dataType.checkIdentifierForNamingConventionCompliance(regExp, "DataType", false)
	}

	@Check
	def checkSetOfTypeName(SetOfDefNamed dataType) {
		val regExp = activeProfile.namingConventionsConfig.dataTypeRegExp;
		dataType.checkIdentifierForNamingConventionCompliance(regExp, "DataType")
		dataType.checkIdentifierForNamingConventionCompliance(regExp, "DataType", false)
	}

	@Check
	def checkSetOfTypeName(SetDefNamed dataType) {
		val regExp = activeProfile.namingConventionsConfig.dataTypeRegExp;
		dataType.checkIdentifierForNamingConventionCompliance(regExp, "DataType")
		dataType.checkIdentifierForNamingConventionCompliance(regExp, "DataType", false)
	}

	@Check
	def checkSetOfTypeName(RecordDefNamed dataType) {
		val regExp = activeProfile.namingConventionsConfig.dataTypeRegExp;
		dataType.checkIdentifierForNamingConventionCompliance(regExp, "DataType")
		dataType.checkIdentifierForNamingConventionCompliance(regExp, "DataType", false)
	}

	@Check
	def checkSetOfTypeName(ComponentDef dataType) {
		val regExp = activeProfile.namingConventionsConfig.dataTypeRegExp;
		dataType.checkIdentifierForNamingConventionCompliance(regExp, "DataType")
		dataType.checkIdentifierForNamingConventionCompliance(regExp, "DataType", false)
	}

	@Check
	def checkSetOfTypeName(UnionDefNamed dataType) {
		val regExp = activeProfile.namingConventionsConfig.dataTypeRegExp;
		dataType.checkIdentifierForNamingConventionCompliance(regExp, "DataType")
		dataType.checkIdentifierForNamingConventionCompliance(regExp, "DataType", false)
	}

	@Check
	def checkSetOfTypeName(PortDef dataType) {
		val regExp = activeProfile.namingConventionsConfig.dataTypeRegExp;
		dataType.checkIdentifierForNamingConventionCompliance(regExp, "DataType")
		dataType.checkIdentifierForNamingConventionCompliance(regExp, "DataType", false)
	}
	
	@Check
	def checkSetOfTypeName(EnumDefNamed dataType) {
		val regExp = activeProfile.namingConventionsConfig.dataTypeRegExp;
		dataType.checkIdentifierForNamingConventionCompliance(regExp, "DataType")
		dataType.checkIdentifierForNamingConventionCompliance(regExp, "DataType", false)
	}	
	
	@Check
	def checkSetOfTypeName(PortElement port) {
		val regExp = activeProfile.namingConventionsConfig.portInstanceRegExp;
		port.checkIdentifierForNamingConventionCompliance(regExp, "PortInstance")
		port.checkIdentifierForNamingConventionCompliance(regExp, "PortInstance", false)
	}	
	
	// TODO: check if something more is required (see implementation of old t3tools)
	@Check
	def checkVariableName(SingleVarInstance variable) {
		var regExp = ""
@@ -236,7 +235,19 @@ public class NamingConventionsValidator extends AbstractDeclarativeValidator {
				regExp = activeProfile.namingConventionsConfig.componentInstanceRegExp
				message = "ComponentInstance"
			} else {
				// TODO: information about not resolved type...
				if (refType == null) {
					val INode node = NodeModelUtils.getNode(variable)
					val infoMessage = "The type declaration for \"" + refType.name + "\" could not be resolved. It cannot be determined whether the variable instances of this type are component instances. They will be treated as variable instances."
					info(
						infoMessage,
						TTCN3Package.eINSTANCE.TTCN3Reference_Name,
						MessageClass.NAMING.toString,
						node.startLine.toString,
						node.endLine.toString,
						"2.1, " + "checkVariable",
						LogLevel.INFORMATION.toString
					);	
				}			
				regExp = activeProfile.namingConventionsConfig.variableRegExp
				message = "Variable"
			}		
@@ -244,7 +255,7 @@ public class NamingConventionsValidator extends AbstractDeclarativeValidator {
			regExp = activeProfile.namingConventionsConfig.variableRegExp
			message = "Variable"
		}
		variable.checkIdentifierForNamingConventionCompliance(regExp, message)
		variable.checkIdentifierForNamingConventionCompliance(regExp, message, false)
	}
	
	@Check
@@ -261,7 +272,7 @@ public class NamingConventionsValidator extends AbstractDeclarativeValidator {
				regExp = activeProfile.namingConventionsConfig.timerRegExp
				message = "Timer"
			}	
			v.checkIdentifierForNamingConventionCompliance(regExp, message)
			v.checkIdentifierForNamingConventionCompliance(regExp, message, false)
		}
	}
	
@@ -269,37 +280,7 @@ public class NamingConventionsValidator extends AbstractDeclarativeValidator {
	def checkVariableName(SingleTempVarInstance variable) {
		var regExp = activeProfile.namingConventionsConfig.variableRegExp
		var message = "Variable"
		variable.checkIdentifierForNamingConventionCompliance(regExp, message)
	}

	@Check
	def checkMessageTemplate(BaseTemplate template) {
		var regExp = ""
		var message = ""
		val templateDef = template.findDesiredParent(TemplateDef)
		val isDerived = templateDef.derived != null
		val matchingSymbols = templateDef.body.eAllOfType(MatchingSymbol)

		if (!isDerived) {
			if (matchingSymbols.empty) {
				regExp = activeProfile.namingConventionsConfig.messageTemplateRegExp
				message = "MessageTemplate";
			} else {
				regExp = activeProfile.namingConventionsConfig.messageTemplateWithWildcardsRegExp
				message = "MessageTemplateWithMatchingExpression";
			}
		} else {
			if (matchingSymbols.empty) {
				regExp = activeProfile.namingConventionsConfig.derivedMessageTemplateRegExp
				message = "DerivedMessageTemplate";
			} else {
				regExp = activeProfile.namingConventionsConfig.derivedMessageTemplateWithWildcardsRegExp
				message = "DerivedMessageTemplateWithMatchingExpression";
			}
		}

		// check message template conventions
		template.checkIdentifierForNamingConventionCompliance(regExp, message)
		variable.checkIdentifierForNamingConventionCompliance(regExp, message, false)
	}

	@Check
@@ -364,7 +345,38 @@ public class NamingConventionsValidator extends AbstractDeclarativeValidator {
		}

		// check STF160 template conventions
		template.checkIdentifierForNamingConventionCompliance(regExp, message)
		template.checkIdentifierForNamingConventionCompliance(regExp, message, true)
	}
	
	@Check
	def checkMessageTemplate(BaseTemplate template) {
		var regExp = ""
		var message = ""
		val templateDef = template.findDesiredParent(TemplateDef)
		val isDerived = templateDef.derived != null
		val matchingSymbols = templateDef.body.eAllOfType(MatchingSymbol)
		matchingSymbols.addAll(templateDef.base.eAllOfType(MatchingSymbol)) // also consider parameter list

		if (!isDerived) {
			if (matchingSymbols.empty) {
				regExp = activeProfile.namingConventionsConfig.messageTemplateRegExp
				message = "MessageTemplate";
			} else {
				regExp = activeProfile.namingConventionsConfig.messageTemplateWithWildcardsRegExp
				message = "MessageTemplateWithMatchingExpression";
			}
		} else {
			if (matchingSymbols.empty) {
				regExp = activeProfile.namingConventionsConfig.derivedMessageTemplateRegExp
				message = "DerivedMessageTemplate";
			} else {
				regExp = activeProfile.namingConventionsConfig.derivedMessageTemplateWithWildcardsRegExp
				message = "DerivedMessageTemplateWithMatchingExpression";
			}
		}

		// check message template conventions
		template.checkIdentifierForNamingConventionCompliance(regExp, message, true)
	}		
	
	def private boolean regExpMatch(String regExp, String subject) {
@@ -395,7 +407,7 @@ public class NamingConventionsValidator extends AbstractDeclarativeValidator {
		}
	}	
	
	def private checkIdentifierForNamingConventionCompliance(TTCN3Reference object, String regExp, String type) {
	def private checkIdentifierForNamingConventionCompliance(TTCN3Reference object, String regExp, String type, boolean showOnlyStartLine) {
		if (object == null || Strings.isNullOrEmpty(regExp))
			return;

@@ -408,7 +420,7 @@ public class NamingConventionsValidator extends AbstractDeclarativeValidator {
			TTCN3StatisticsProvider.getInstance.increaseCountNaming
			val message = "\"" + object.name + "\" does not comply to the naming conventions for \"" + type + "\"!"
			var endLine = ""
			if (object instanceof TTCN3Module) {
			if (showOnlyStartLine) {
				endLine = node.startLine.toString
			} else {
				endLine = node.endLine.toString