Loading de.ugoe.cs.swe.T3Q/config/t3q-tf160-latest-next-new-features.xml +6 −3 Original line number Diff line number Diff line Loading @@ -2,12 +2,13 @@ <ConfigurationProfiles> <QualityCheckProfile> <profileName>stf160Profile</profileName> <profileVersion>v2.1.0b2</profileVersion> <profileVersion>v2.1.0b3</profileVersion> <!-- <resourceExtensionsRegExp>ttcn|ttcn3|3mp</resourceExtensionsRegExp> --> <!-- <projectExtension>t3p</projectExtension> --> <ignoredResourceRegExp>((.*[/\\]Common[/\\](IMS_LibSip|IMS_XSD)[/\\].*[.]ttcn)|(.*[/\\]Common[/\\](HTTP)[/\\]uri.*[.]ttcn)|(.*[/\\]LTE_A_R12[/\\](D2D_ProSe)[/\\]urn.*[.]ttcn)|(.*[/\\]IMS[/\\]XCAP_XSD[/\\].*[.]ttcn)|(.*[/\\]MCX[/\\]CommonXSD[/\\].*[.]ttcn)|(.*[/\\].*[/\\][Cc]ommon[/\\]TestcaseProperties.*[.]ttcn))</ignoredResourceRegExp> <!-- <settingRecursiveProcessing>true</settingRecursiveProcessing> --> <checkNoUninitializedFieldsInTemplates>true</checkNoUninitializedFieldsInTemplates> <checkNoUninitializedFieldsInTemplatesRecursion>false</checkNoUninitializedFieldsInTemplatesRecursion> <checkNoUninitialisedVariables>false</checkNoUninitialisedVariables> <checkNoUninitialisedVariablesExclude> <!-- to be discarded if checkNoUninitialisedVariables is true. If list is empty, no restrictions --> <string>enumerated</string> Loading Loading @@ -144,7 +145,7 @@ </QualityCheckProfile> <QualityCheckProfile> <profileName>defaultProfile</profileName> <profileVersion>v2.1.0b2</profileVersion> <profileVersion>v2.1.0b3</profileVersion> <ignoredResourceRegExp>(.*[/\\]Common[/\\](IMS_LibSip|IMS_XSD)[/\\].*[.]ttcn)</ignoredResourceRegExp> <settingAbortOnError>true</settingAbortOnError> <loggingConfiguration> Loading Loading @@ -199,6 +200,7 @@ <checkNoUnusedFormalParameters>true</checkNoUnusedFormalParameters> <checkNoUnusedLocalDefinitions>true</checkNoUnusedLocalDefinitions> <checkNoUninitializedFieldsInTemplates>true</checkNoUninitializedFieldsInTemplates> <checkNoUninitializedFieldsInTemplatesRecursion>false</checkNoUninitializedFieldsInTemplatesRecursion> <checkNoUninitialisedVariables>true</checkNoUninitialisedVariables> <checkNoUninitialisedVariablesExclude> <string>enumerated</string> Loading Loading @@ -264,7 +266,7 @@ </QualityCheckProfile> <QualityCheckProfile> <profileName>nothing</profileName> <profileVersion>v2.1.0b2</profileVersion> <profileVersion>v2.1.0b3</profileVersion> <ignoredResourceRegExp>(.*[/\\]Common[/\\](IMS_LibSip|IMS_XSD)[/\\].*[.]ttcn)</ignoredResourceRegExp> <settingAbortOnError>true</settingAbortOnError> <loggingConfiguration> Loading Loading @@ -317,6 +319,7 @@ <checkNoUnusedFormalParameters>false</checkNoUnusedFormalParameters> <checkNoUnusedLocalDefinitions>false</checkNoUnusedLocalDefinitions> <checkNoUninitializedFieldsInTemplates>true</checkNoUninitializedFieldsInTemplates> <checkNoUninitializedFieldsInTemplatesRecursion>false</checkNoUninitializedFieldsInTemplatesRecursion> <checkNoUninitialisedVariables>true</checkNoUninitialisedVariables> <checkNoUninitialisedVariablesExclude> <string>enumerated</string> Loading de.ugoe.cs.swe.T3Q/config/t3q-tf160-latest-next.xml +6 −3 Original line number Diff line number Diff line Loading @@ -2,12 +2,13 @@ <ConfigurationProfiles> <QualityCheckProfile> <profileName>stf160Profile</profileName> <profileVersion>v2.1.0b2</profileVersion> <profileVersion>v2.1.0b3</profileVersion> <!-- <resourceExtensionsRegExp>ttcn|ttcn3|3mp</resourceExtensionsRegExp> --> <!-- <projectExtension>t3p</projectExtension> --> <ignoredResourceRegExp>((.*[/\\]Common[/\\](IMS_LibSip|IMS_XSD)[/\\].*[.]ttcn)|(.*[/\\]Common[/\\](HTTP)[/\\]uri.*[.]ttcn)|(.*[/\\]LTE_A_R12[/\\](D2D_ProSe)[/\\]urn.*[.]ttcn)|(.*[/\\]IMS[/\\]XCAP_XSD[/\\].*[.]ttcn)|(.*[/\\]MCX[/\\]CommonXSD[/\\].*[.]ttcn)|(.*[/\\].*[/\\][Cc]ommon[/\\]TestcaseProperties.*[.]ttcn))</ignoredResourceRegExp> <!-- <settingRecursiveProcessing>true</settingRecursiveProcessing> --> <checkNoUninitializedFieldsInTemplates>false</checkNoUninitializedFieldsInTemplates> <checkNoUninitializedFieldsInTemplatesRecursion>false</checkNoUninitializedFieldsInTemplatesRecursion> <checkNoUninitialisedVariables>false</checkNoUninitialisedVariables> <checkNoUninitialisedVariablesExclude> <!-- to be discarded if checkNoUninitialisedVariables is true. If list is empty, no restrictions --> <string>enumerated</string> Loading Loading @@ -144,7 +145,7 @@ </QualityCheckProfile> <QualityCheckProfile> <profileName>defaultProfile</profileName> <profileVersion>v2.1.0b2</profileVersion> <profileVersion>v2.1.0b3</profileVersion> <ignoredResourceRegExp>(.*[/\\]Common[/\\](IMS_LibSip|IMS_XSD)[/\\].*[.]ttcn)</ignoredResourceRegExp> <settingAbortOnError>true</settingAbortOnError> <loggingConfiguration> Loading Loading @@ -199,6 +200,7 @@ <checkNoUnusedFormalParameters>true</checkNoUnusedFormalParameters> <checkNoUnusedLocalDefinitions>true</checkNoUnusedLocalDefinitions> <checkNoUninitializedFieldsInTemplates>false</checkNoUninitializedFieldsInTemplates> <checkNoUninitializedFieldsInTemplatesRecursion>false</checkNoUninitializedFieldsInTemplatesRecursion> <checkNoUninitialisedVariables>true</checkNoUninitialisedVariables> <checkNoUninitialisedVariablesExclude> <string>enumerated</string> Loading Loading @@ -264,7 +266,7 @@ </QualityCheckProfile> <QualityCheckProfile> <profileName>nothing</profileName> <profileVersion>v2.1.0b2</profileVersion> <profileVersion>v2.1.0b3</profileVersion> <ignoredResourceRegExp>(.*[/\\]Common[/\\](IMS_LibSip|IMS_XSD)[/\\].*[.]ttcn)</ignoredResourceRegExp> <settingAbortOnError>true</settingAbortOnError> <loggingConfiguration> Loading Loading @@ -317,6 +319,7 @@ <checkNoUnusedFormalParameters>false</checkNoUnusedFormalParameters> <checkNoUnusedLocalDefinitions>false</checkNoUnusedLocalDefinitions> <checkNoUninitializedFieldsInTemplates>false</checkNoUninitializedFieldsInTemplates> <checkNoUninitializedFieldsInTemplatesRecursion>false</checkNoUninitializedFieldsInTemplatesRecursion> <checkNoUninitialisedVariables>true</checkNoUninitialisedVariables> <checkNoUninitialisedVariablesExclude> <string>enumerated</string> Loading de.ugoe.cs.swe.T3Q/src/de/ugoe/cs/swe/T3Q/T3Q.java +2 −2 Original line number Diff line number Diff line Loading @@ -32,8 +32,8 @@ import de.ugoe.cs.swe.scoping.TTCN3GlobalScopeProvider; public class T3Q { //TODO: externalise meta-data private static String versionNumber = "v2.1.0b2"; private static String supportedTTCN3Version = "4.8.1"; private static String versionNumber = "v2.1.0b3"; private static String supportedTTCN3Version = "4.10.1"; // set during automated server builds -> no longer displayed or used.. private static String buildStamp = "---BUILD_STAMP---"; public static QualityCheckProfile activeProfile = null; Loading de.ugoe.cs.swe.TTCN3/src/de/ugoe/cs/swe/validation/CodeStyleValidator.xtend +36 −11 Original line number Diff line number Diff line Loading @@ -16,16 +16,20 @@ import de.ugoe.cs.swe.tTCN3.ArrayOrMixedExpression import de.ugoe.cs.swe.tTCN3.Assignment import de.ugoe.cs.swe.tTCN3.BaseTemplate import de.ugoe.cs.swe.tTCN3.ComponentDef import de.ugoe.cs.swe.tTCN3.CompoundExpression import de.ugoe.cs.swe.tTCN3.ConstDef import de.ugoe.cs.swe.tTCN3.ConstList import de.ugoe.cs.swe.tTCN3.EnumDefNamed import de.ugoe.cs.swe.tTCN3.ExtFunctionDef import de.ugoe.cs.swe.tTCN3.ExtendedFieldReference import de.ugoe.cs.swe.tTCN3.FieldExpressionList import de.ugoe.cs.swe.tTCN3.FieldReference import de.ugoe.cs.swe.tTCN3.FormalTemplatePar import de.ugoe.cs.swe.tTCN3.FormalValuePar import de.ugoe.cs.swe.tTCN3.FunctionBodyDef import de.ugoe.cs.swe.tTCN3.FunctionDef import de.ugoe.cs.swe.tTCN3.FunctionInstance import de.ugoe.cs.swe.tTCN3.FunctionStatement import de.ugoe.cs.swe.tTCN3.GotoStatement import de.ugoe.cs.swe.tTCN3.GroupDef import de.ugoe.cs.swe.tTCN3.ImportDef Loading Loading @@ -62,6 +66,7 @@ import de.ugoe.cs.swe.tTCN3.TTCN3Package import de.ugoe.cs.swe.tTCN3.TTCN3Reference import de.ugoe.cs.swe.tTCN3.TempVarList import de.ugoe.cs.swe.tTCN3.TemplateDef import de.ugoe.cs.swe.tTCN3.TemplateInstance import de.ugoe.cs.swe.tTCN3.TestcaseDef import de.ugoe.cs.swe.tTCN3.TimerRefOrAll import de.ugoe.cs.swe.tTCN3.TimerRefOrAny Loading @@ -70,10 +75,11 @@ import de.ugoe.cs.swe.tTCN3.TypeDef import de.ugoe.cs.swe.tTCN3.UnionDefNamed import de.ugoe.cs.swe.tTCN3.UnionFieldDef import de.ugoe.cs.swe.tTCN3.Value import de.ugoe.cs.swe.tTCN3.ValueRef import de.ugoe.cs.swe.tTCN3.ValueofOp import de.ugoe.cs.swe.tTCN3.VarInstance import de.ugoe.cs.swe.tTCN3.VarList import de.ugoe.cs.swe.tTCN3.ValueRef import de.ugoe.cs.swe.tTCN3.impl.ArrayOrMixedExpressionImpl import java.util.ArrayList import java.util.HashMap import java.util.HashSet Loading @@ -100,11 +106,6 @@ import static extension de.ugoe.cs.swe.common.TTCN3ReferenceHelper.* import static extension de.ugoe.cs.swe.common.TTCN3ScopeHelper.* import static extension org.eclipse.emf.ecore.util.EcoreUtil.* import static extension org.eclipse.xtext.EcoreUtil2.* import de.ugoe.cs.swe.tTCN3.TemplateInstance import de.ugoe.cs.swe.tTCN3.FunctionBodyDef import de.ugoe.cs.swe.tTCN3.FunctionStatement import de.ugoe.cs.swe.tTCN3.CompoundExpression import de.ugoe.cs.swe.tTCN3.impl.ArrayOrMixedExpressionImpl class CheckDefinitionComeFirstParameter { public boolean hasOtherDefinitions Loading Loading @@ -1206,8 +1207,29 @@ class CodeStyleValidator extends AbstractDeclarativeValidator { if (type instanceof RecordDefNamed) { var expr = template.body.simple.expr if (expr instanceof FieldExpressionList) { checkUnreferencedFields(expr, type, template.base.name) //get fields from referenced template var referencedFields = new ArrayList<FieldReference>() referencedFields.addAll(expr.specs.map[it.fieldRef]) template.collectInheritedFieldSpecifications(referencedFields) checkNoUninitializedFieldsInTemplates(referencedFields, type, template.base.name, expr) } } } } protected def void collectInheritedFieldSpecifications(TemplateDef template, ArrayList<FieldReference> referencedFields) { if (template.derived !== null) { //TODO: check same type? //TODO: check type, further derivation? var baseTemplate = (template.derived.template.eContainer as TemplateDef) var derivedExpr = baseTemplate.body.simple.expr if (derivedExpr instanceof FieldExpressionList) { referencedFields.addAll(derivedExpr.specs.map[it.fieldRef]) } //TODO: make optional if (activeProfile.checkNoUninitializedFieldsInTemplatesRecursion) if (baseTemplate.derived !== null) { baseTemplate.collectInheritedFieldSpecifications(referencedFields) } } } Loading @@ -1220,11 +1242,13 @@ class CodeStyleValidator extends AbstractDeclarativeValidator { if (variable.type.ref !== null) { var type = variable.type.ref.head //TODO: support set as well? if (type instanceof RecordDefNamed) { for (single : variable.tempList.variables) { var expr = single.template.simple.expr if (expr instanceof FieldExpressionList) { checkUnreferencedFields(expr, type, single.name) var referencedFields = expr.specs.map[it.fieldRef] checkNoUninitializedFieldsInTemplates(referencedFields, type, single.name, expr) } } } Loading @@ -1239,11 +1263,13 @@ class CodeStyleValidator extends AbstractDeclarativeValidator { var variable = assignment.ref.ref.head.target.eContainer.eContainer var type = (variable as VarInstance).type.ref.head if (type !== null) { //TODO: support set as well? if (type instanceof RecordDefNamed) { for (single : (variable as VarInstance).tempList.variables) { var expr = single.template.simple.expr if (expr instanceof FieldExpressionList) { checkUnreferencedFields(expr, type, single.name) var referencedFields = expr.specs.map[it.fieldRef] checkNoUninitializedFieldsInTemplates(referencedFields, type, single.name, expr) } } } Loading @@ -1251,8 +1277,7 @@ class CodeStyleValidator extends AbstractDeclarativeValidator { } protected def void checkUnreferencedFields(FieldExpressionList expr, RecordDefNamed type, String template) { var referencedFields = expr.specs.map[it.fieldRef] protected def void checkNoUninitializedFieldsInTemplates(List<FieldReference> referencedFields, RecordDefNamed type, String template, FieldExpressionList expr) { for (field : type.body.defs) { if (!referencedFields.contains(field)) { statistics.incrementCountStyle Loading de.ugoe.cs.swe.TTCN3Configuration/src/de/ugoe/cs/swe/TTCN3Configuration/QualityCheckProfile.java +9 −0 Original line number Diff line number Diff line Loading @@ -41,6 +41,7 @@ public class QualityCheckProfile extends ConfigurationProfile { private boolean checkNoUnusedFormalParameters = true; private boolean checkNoUnusedLocalDefinitions = true; private boolean checkNoUninitializedFieldsInTemplates = true; private boolean checkNoUninitializedFieldsInTemplatesRecursion = false; private boolean checkNoUninitialisedVariables = true; private String[] checkNoUninitialisedVariablesExclude = {"enumerated", "union", "record", "record of", "set", "set of"}; private boolean checkNoLiterals = true; Loading Loading @@ -638,6 +639,14 @@ public class QualityCheckProfile extends ConfigurationProfile { this.checkNoUninitializedFieldsInTemplates = checkNoUninitializedFieldsInTemplates; } public boolean isCheckNoUninitializedFieldsInTemplatesRecursion() { return checkNoUninitializedFieldsInTemplatesRecursion; } public void setCheckNoUninitializedFieldsInTemplatesRecursion(boolean checkNoUninitializedFieldsInTemplatesRecursion) { this.checkNoUninitializedFieldsInTemplatesRecursion = checkNoUninitializedFieldsInTemplatesRecursion; } } Loading
de.ugoe.cs.swe.T3Q/config/t3q-tf160-latest-next-new-features.xml +6 −3 Original line number Diff line number Diff line Loading @@ -2,12 +2,13 @@ <ConfigurationProfiles> <QualityCheckProfile> <profileName>stf160Profile</profileName> <profileVersion>v2.1.0b2</profileVersion> <profileVersion>v2.1.0b3</profileVersion> <!-- <resourceExtensionsRegExp>ttcn|ttcn3|3mp</resourceExtensionsRegExp> --> <!-- <projectExtension>t3p</projectExtension> --> <ignoredResourceRegExp>((.*[/\\]Common[/\\](IMS_LibSip|IMS_XSD)[/\\].*[.]ttcn)|(.*[/\\]Common[/\\](HTTP)[/\\]uri.*[.]ttcn)|(.*[/\\]LTE_A_R12[/\\](D2D_ProSe)[/\\]urn.*[.]ttcn)|(.*[/\\]IMS[/\\]XCAP_XSD[/\\].*[.]ttcn)|(.*[/\\]MCX[/\\]CommonXSD[/\\].*[.]ttcn)|(.*[/\\].*[/\\][Cc]ommon[/\\]TestcaseProperties.*[.]ttcn))</ignoredResourceRegExp> <!-- <settingRecursiveProcessing>true</settingRecursiveProcessing> --> <checkNoUninitializedFieldsInTemplates>true</checkNoUninitializedFieldsInTemplates> <checkNoUninitializedFieldsInTemplatesRecursion>false</checkNoUninitializedFieldsInTemplatesRecursion> <checkNoUninitialisedVariables>false</checkNoUninitialisedVariables> <checkNoUninitialisedVariablesExclude> <!-- to be discarded if checkNoUninitialisedVariables is true. If list is empty, no restrictions --> <string>enumerated</string> Loading Loading @@ -144,7 +145,7 @@ </QualityCheckProfile> <QualityCheckProfile> <profileName>defaultProfile</profileName> <profileVersion>v2.1.0b2</profileVersion> <profileVersion>v2.1.0b3</profileVersion> <ignoredResourceRegExp>(.*[/\\]Common[/\\](IMS_LibSip|IMS_XSD)[/\\].*[.]ttcn)</ignoredResourceRegExp> <settingAbortOnError>true</settingAbortOnError> <loggingConfiguration> Loading Loading @@ -199,6 +200,7 @@ <checkNoUnusedFormalParameters>true</checkNoUnusedFormalParameters> <checkNoUnusedLocalDefinitions>true</checkNoUnusedLocalDefinitions> <checkNoUninitializedFieldsInTemplates>true</checkNoUninitializedFieldsInTemplates> <checkNoUninitializedFieldsInTemplatesRecursion>false</checkNoUninitializedFieldsInTemplatesRecursion> <checkNoUninitialisedVariables>true</checkNoUninitialisedVariables> <checkNoUninitialisedVariablesExclude> <string>enumerated</string> Loading Loading @@ -264,7 +266,7 @@ </QualityCheckProfile> <QualityCheckProfile> <profileName>nothing</profileName> <profileVersion>v2.1.0b2</profileVersion> <profileVersion>v2.1.0b3</profileVersion> <ignoredResourceRegExp>(.*[/\\]Common[/\\](IMS_LibSip|IMS_XSD)[/\\].*[.]ttcn)</ignoredResourceRegExp> <settingAbortOnError>true</settingAbortOnError> <loggingConfiguration> Loading Loading @@ -317,6 +319,7 @@ <checkNoUnusedFormalParameters>false</checkNoUnusedFormalParameters> <checkNoUnusedLocalDefinitions>false</checkNoUnusedLocalDefinitions> <checkNoUninitializedFieldsInTemplates>true</checkNoUninitializedFieldsInTemplates> <checkNoUninitializedFieldsInTemplatesRecursion>false</checkNoUninitializedFieldsInTemplatesRecursion> <checkNoUninitialisedVariables>true</checkNoUninitialisedVariables> <checkNoUninitialisedVariablesExclude> <string>enumerated</string> Loading
de.ugoe.cs.swe.T3Q/config/t3q-tf160-latest-next.xml +6 −3 Original line number Diff line number Diff line Loading @@ -2,12 +2,13 @@ <ConfigurationProfiles> <QualityCheckProfile> <profileName>stf160Profile</profileName> <profileVersion>v2.1.0b2</profileVersion> <profileVersion>v2.1.0b3</profileVersion> <!-- <resourceExtensionsRegExp>ttcn|ttcn3|3mp</resourceExtensionsRegExp> --> <!-- <projectExtension>t3p</projectExtension> --> <ignoredResourceRegExp>((.*[/\\]Common[/\\](IMS_LibSip|IMS_XSD)[/\\].*[.]ttcn)|(.*[/\\]Common[/\\](HTTP)[/\\]uri.*[.]ttcn)|(.*[/\\]LTE_A_R12[/\\](D2D_ProSe)[/\\]urn.*[.]ttcn)|(.*[/\\]IMS[/\\]XCAP_XSD[/\\].*[.]ttcn)|(.*[/\\]MCX[/\\]CommonXSD[/\\].*[.]ttcn)|(.*[/\\].*[/\\][Cc]ommon[/\\]TestcaseProperties.*[.]ttcn))</ignoredResourceRegExp> <!-- <settingRecursiveProcessing>true</settingRecursiveProcessing> --> <checkNoUninitializedFieldsInTemplates>false</checkNoUninitializedFieldsInTemplates> <checkNoUninitializedFieldsInTemplatesRecursion>false</checkNoUninitializedFieldsInTemplatesRecursion> <checkNoUninitialisedVariables>false</checkNoUninitialisedVariables> <checkNoUninitialisedVariablesExclude> <!-- to be discarded if checkNoUninitialisedVariables is true. If list is empty, no restrictions --> <string>enumerated</string> Loading Loading @@ -144,7 +145,7 @@ </QualityCheckProfile> <QualityCheckProfile> <profileName>defaultProfile</profileName> <profileVersion>v2.1.0b2</profileVersion> <profileVersion>v2.1.0b3</profileVersion> <ignoredResourceRegExp>(.*[/\\]Common[/\\](IMS_LibSip|IMS_XSD)[/\\].*[.]ttcn)</ignoredResourceRegExp> <settingAbortOnError>true</settingAbortOnError> <loggingConfiguration> Loading Loading @@ -199,6 +200,7 @@ <checkNoUnusedFormalParameters>true</checkNoUnusedFormalParameters> <checkNoUnusedLocalDefinitions>true</checkNoUnusedLocalDefinitions> <checkNoUninitializedFieldsInTemplates>false</checkNoUninitializedFieldsInTemplates> <checkNoUninitializedFieldsInTemplatesRecursion>false</checkNoUninitializedFieldsInTemplatesRecursion> <checkNoUninitialisedVariables>true</checkNoUninitialisedVariables> <checkNoUninitialisedVariablesExclude> <string>enumerated</string> Loading Loading @@ -264,7 +266,7 @@ </QualityCheckProfile> <QualityCheckProfile> <profileName>nothing</profileName> <profileVersion>v2.1.0b2</profileVersion> <profileVersion>v2.1.0b3</profileVersion> <ignoredResourceRegExp>(.*[/\\]Common[/\\](IMS_LibSip|IMS_XSD)[/\\].*[.]ttcn)</ignoredResourceRegExp> <settingAbortOnError>true</settingAbortOnError> <loggingConfiguration> Loading Loading @@ -317,6 +319,7 @@ <checkNoUnusedFormalParameters>false</checkNoUnusedFormalParameters> <checkNoUnusedLocalDefinitions>false</checkNoUnusedLocalDefinitions> <checkNoUninitializedFieldsInTemplates>false</checkNoUninitializedFieldsInTemplates> <checkNoUninitializedFieldsInTemplatesRecursion>false</checkNoUninitializedFieldsInTemplatesRecursion> <checkNoUninitialisedVariables>true</checkNoUninitialisedVariables> <checkNoUninitialisedVariablesExclude> <string>enumerated</string> Loading
de.ugoe.cs.swe.T3Q/src/de/ugoe/cs/swe/T3Q/T3Q.java +2 −2 Original line number Diff line number Diff line Loading @@ -32,8 +32,8 @@ import de.ugoe.cs.swe.scoping.TTCN3GlobalScopeProvider; public class T3Q { //TODO: externalise meta-data private static String versionNumber = "v2.1.0b2"; private static String supportedTTCN3Version = "4.8.1"; private static String versionNumber = "v2.1.0b3"; private static String supportedTTCN3Version = "4.10.1"; // set during automated server builds -> no longer displayed or used.. private static String buildStamp = "---BUILD_STAMP---"; public static QualityCheckProfile activeProfile = null; Loading
de.ugoe.cs.swe.TTCN3/src/de/ugoe/cs/swe/validation/CodeStyleValidator.xtend +36 −11 Original line number Diff line number Diff line Loading @@ -16,16 +16,20 @@ import de.ugoe.cs.swe.tTCN3.ArrayOrMixedExpression import de.ugoe.cs.swe.tTCN3.Assignment import de.ugoe.cs.swe.tTCN3.BaseTemplate import de.ugoe.cs.swe.tTCN3.ComponentDef import de.ugoe.cs.swe.tTCN3.CompoundExpression import de.ugoe.cs.swe.tTCN3.ConstDef import de.ugoe.cs.swe.tTCN3.ConstList import de.ugoe.cs.swe.tTCN3.EnumDefNamed import de.ugoe.cs.swe.tTCN3.ExtFunctionDef import de.ugoe.cs.swe.tTCN3.ExtendedFieldReference import de.ugoe.cs.swe.tTCN3.FieldExpressionList import de.ugoe.cs.swe.tTCN3.FieldReference import de.ugoe.cs.swe.tTCN3.FormalTemplatePar import de.ugoe.cs.swe.tTCN3.FormalValuePar import de.ugoe.cs.swe.tTCN3.FunctionBodyDef import de.ugoe.cs.swe.tTCN3.FunctionDef import de.ugoe.cs.swe.tTCN3.FunctionInstance import de.ugoe.cs.swe.tTCN3.FunctionStatement import de.ugoe.cs.swe.tTCN3.GotoStatement import de.ugoe.cs.swe.tTCN3.GroupDef import de.ugoe.cs.swe.tTCN3.ImportDef Loading Loading @@ -62,6 +66,7 @@ import de.ugoe.cs.swe.tTCN3.TTCN3Package import de.ugoe.cs.swe.tTCN3.TTCN3Reference import de.ugoe.cs.swe.tTCN3.TempVarList import de.ugoe.cs.swe.tTCN3.TemplateDef import de.ugoe.cs.swe.tTCN3.TemplateInstance import de.ugoe.cs.swe.tTCN3.TestcaseDef import de.ugoe.cs.swe.tTCN3.TimerRefOrAll import de.ugoe.cs.swe.tTCN3.TimerRefOrAny Loading @@ -70,10 +75,11 @@ import de.ugoe.cs.swe.tTCN3.TypeDef import de.ugoe.cs.swe.tTCN3.UnionDefNamed import de.ugoe.cs.swe.tTCN3.UnionFieldDef import de.ugoe.cs.swe.tTCN3.Value import de.ugoe.cs.swe.tTCN3.ValueRef import de.ugoe.cs.swe.tTCN3.ValueofOp import de.ugoe.cs.swe.tTCN3.VarInstance import de.ugoe.cs.swe.tTCN3.VarList import de.ugoe.cs.swe.tTCN3.ValueRef import de.ugoe.cs.swe.tTCN3.impl.ArrayOrMixedExpressionImpl import java.util.ArrayList import java.util.HashMap import java.util.HashSet Loading @@ -100,11 +106,6 @@ import static extension de.ugoe.cs.swe.common.TTCN3ReferenceHelper.* import static extension de.ugoe.cs.swe.common.TTCN3ScopeHelper.* import static extension org.eclipse.emf.ecore.util.EcoreUtil.* import static extension org.eclipse.xtext.EcoreUtil2.* import de.ugoe.cs.swe.tTCN3.TemplateInstance import de.ugoe.cs.swe.tTCN3.FunctionBodyDef import de.ugoe.cs.swe.tTCN3.FunctionStatement import de.ugoe.cs.swe.tTCN3.CompoundExpression import de.ugoe.cs.swe.tTCN3.impl.ArrayOrMixedExpressionImpl class CheckDefinitionComeFirstParameter { public boolean hasOtherDefinitions Loading Loading @@ -1206,8 +1207,29 @@ class CodeStyleValidator extends AbstractDeclarativeValidator { if (type instanceof RecordDefNamed) { var expr = template.body.simple.expr if (expr instanceof FieldExpressionList) { checkUnreferencedFields(expr, type, template.base.name) //get fields from referenced template var referencedFields = new ArrayList<FieldReference>() referencedFields.addAll(expr.specs.map[it.fieldRef]) template.collectInheritedFieldSpecifications(referencedFields) checkNoUninitializedFieldsInTemplates(referencedFields, type, template.base.name, expr) } } } } protected def void collectInheritedFieldSpecifications(TemplateDef template, ArrayList<FieldReference> referencedFields) { if (template.derived !== null) { //TODO: check same type? //TODO: check type, further derivation? var baseTemplate = (template.derived.template.eContainer as TemplateDef) var derivedExpr = baseTemplate.body.simple.expr if (derivedExpr instanceof FieldExpressionList) { referencedFields.addAll(derivedExpr.specs.map[it.fieldRef]) } //TODO: make optional if (activeProfile.checkNoUninitializedFieldsInTemplatesRecursion) if (baseTemplate.derived !== null) { baseTemplate.collectInheritedFieldSpecifications(referencedFields) } } } Loading @@ -1220,11 +1242,13 @@ class CodeStyleValidator extends AbstractDeclarativeValidator { if (variable.type.ref !== null) { var type = variable.type.ref.head //TODO: support set as well? if (type instanceof RecordDefNamed) { for (single : variable.tempList.variables) { var expr = single.template.simple.expr if (expr instanceof FieldExpressionList) { checkUnreferencedFields(expr, type, single.name) var referencedFields = expr.specs.map[it.fieldRef] checkNoUninitializedFieldsInTemplates(referencedFields, type, single.name, expr) } } } Loading @@ -1239,11 +1263,13 @@ class CodeStyleValidator extends AbstractDeclarativeValidator { var variable = assignment.ref.ref.head.target.eContainer.eContainer var type = (variable as VarInstance).type.ref.head if (type !== null) { //TODO: support set as well? if (type instanceof RecordDefNamed) { for (single : (variable as VarInstance).tempList.variables) { var expr = single.template.simple.expr if (expr instanceof FieldExpressionList) { checkUnreferencedFields(expr, type, single.name) var referencedFields = expr.specs.map[it.fieldRef] checkNoUninitializedFieldsInTemplates(referencedFields, type, single.name, expr) } } } Loading @@ -1251,8 +1277,7 @@ class CodeStyleValidator extends AbstractDeclarativeValidator { } protected def void checkUnreferencedFields(FieldExpressionList expr, RecordDefNamed type, String template) { var referencedFields = expr.specs.map[it.fieldRef] protected def void checkNoUninitializedFieldsInTemplates(List<FieldReference> referencedFields, RecordDefNamed type, String template, FieldExpressionList expr) { for (field : type.body.defs) { if (!referencedFields.contains(field)) { statistics.incrementCountStyle Loading
de.ugoe.cs.swe.TTCN3Configuration/src/de/ugoe/cs/swe/TTCN3Configuration/QualityCheckProfile.java +9 −0 Original line number Diff line number Diff line Loading @@ -41,6 +41,7 @@ public class QualityCheckProfile extends ConfigurationProfile { private boolean checkNoUnusedFormalParameters = true; private boolean checkNoUnusedLocalDefinitions = true; private boolean checkNoUninitializedFieldsInTemplates = true; private boolean checkNoUninitializedFieldsInTemplatesRecursion = false; private boolean checkNoUninitialisedVariables = true; private String[] checkNoUninitialisedVariablesExclude = {"enumerated", "union", "record", "record of", "set", "set of"}; private boolean checkNoLiterals = true; Loading Loading @@ -638,6 +639,14 @@ public class QualityCheckProfile extends ConfigurationProfile { this.checkNoUninitializedFieldsInTemplates = checkNoUninitializedFieldsInTemplates; } public boolean isCheckNoUninitializedFieldsInTemplatesRecursion() { return checkNoUninitializedFieldsInTemplatesRecursion; } public void setCheckNoUninitializedFieldsInTemplatesRecursion(boolean checkNoUninitializedFieldsInTemplatesRecursion) { this.checkNoUninitializedFieldsInTemplatesRecursion = checkNoUninitializedFieldsInTemplatesRecursion; } }