Loading de.ugoe.cs.swe.TTCN3/src/de/ugoe/cs/swe/TTCN3.xtext +1 −1 Original line number Diff line number Diff line Loading @@ -1149,7 +1149,7 @@ GroupRefList: groups+=[GroupDef|QualifiedIdentifier] (COMMA groups+=[GroupDef|QualifiedIdentifier])*; TTCN3Reference: ReferencedType | RefValue | TestcaseDef | AltstepDef | SignatureDef | PortElement; ReferencedType | RefValue | TestcaseDef | AltstepDef | SignatureDef | PortElement | LabelStatement | GotoStatement; TTCN3ReferenceList: refs+=[TTCN3Reference|IDENTIFIER] (COMMA refs+=[TTCN3Reference|IDENTIFIER])*; Loading de.ugoe.cs.swe.TTCN3/src/de/ugoe/cs/swe/validation/TTCN3Validator.xtend +39 −0 Original line number Diff line number Diff line Loading @@ -84,6 +84,8 @@ import de.ugoe.cs.swe.tTCN3.Signature import de.ugoe.cs.swe.tTCN3.ProcOrTypeList import de.ugoe.cs.swe.tTCN3.AllOrSignatureList import de.ugoe.cs.swe.tTCN3.AllOrTypeList import de.ugoe.cs.swe.tTCN3.GotoStatement import de.ugoe.cs.swe.tTCN3.LabelStatement class TTCN3Validator extends AbstractTTCN3Validator { val ConfigTools configTools = ConfigTools.getInstance; Loading Loading @@ -607,6 +609,43 @@ class TTCN3Validator extends AbstractTTCN3Validator { /** * END: Structure of Data --------------------------------------------------------------------- */ /** * BEGIN: Code Style ---------------------------------------------------------------------------- */ @Check def checkNoGotoStatements(GotoStatement goto) { goto.checkNoLabelsOrGotoStatements } @Check def checkNoGotoStatements(LabelStatement label) { label.checkNoLabelsOrGotoStatements } def private checkNoLabelsOrGotoStatements(TTCN3Reference ref) { if (!activeProfile.checkNoLabelsOrGotoStatements) return; var message = "" val INode node = NodeModelUtils.getNode(ref) switch ref { GotoStatement: message = "A \"goto\" statement is used!" LabelStatement: message = "A \"label\" statement is used!" } warning( message, TTCN3Package.eINSTANCE.TTCN3Reference_Name, MessageClass.STYLE.toString, node.startLine.toString, node.endLine.toString, "6.1, " + MiscTools.getMethodName() ); } /** * END: Code Styl e------------------------------------------------------------------------------ */ @Check def checkUniqueNameNestedVariable(RefValue variable) { variable.isNameClashInHierarchy Loading Loading
de.ugoe.cs.swe.TTCN3/src/de/ugoe/cs/swe/TTCN3.xtext +1 −1 Original line number Diff line number Diff line Loading @@ -1149,7 +1149,7 @@ GroupRefList: groups+=[GroupDef|QualifiedIdentifier] (COMMA groups+=[GroupDef|QualifiedIdentifier])*; TTCN3Reference: ReferencedType | RefValue | TestcaseDef | AltstepDef | SignatureDef | PortElement; ReferencedType | RefValue | TestcaseDef | AltstepDef | SignatureDef | PortElement | LabelStatement | GotoStatement; TTCN3ReferenceList: refs+=[TTCN3Reference|IDENTIFIER] (COMMA refs+=[TTCN3Reference|IDENTIFIER])*; Loading
de.ugoe.cs.swe.TTCN3/src/de/ugoe/cs/swe/validation/TTCN3Validator.xtend +39 −0 Original line number Diff line number Diff line Loading @@ -84,6 +84,8 @@ import de.ugoe.cs.swe.tTCN3.Signature import de.ugoe.cs.swe.tTCN3.ProcOrTypeList import de.ugoe.cs.swe.tTCN3.AllOrSignatureList import de.ugoe.cs.swe.tTCN3.AllOrTypeList import de.ugoe.cs.swe.tTCN3.GotoStatement import de.ugoe.cs.swe.tTCN3.LabelStatement class TTCN3Validator extends AbstractTTCN3Validator { val ConfigTools configTools = ConfigTools.getInstance; Loading Loading @@ -607,6 +609,43 @@ class TTCN3Validator extends AbstractTTCN3Validator { /** * END: Structure of Data --------------------------------------------------------------------- */ /** * BEGIN: Code Style ---------------------------------------------------------------------------- */ @Check def checkNoGotoStatements(GotoStatement goto) { goto.checkNoLabelsOrGotoStatements } @Check def checkNoGotoStatements(LabelStatement label) { label.checkNoLabelsOrGotoStatements } def private checkNoLabelsOrGotoStatements(TTCN3Reference ref) { if (!activeProfile.checkNoLabelsOrGotoStatements) return; var message = "" val INode node = NodeModelUtils.getNode(ref) switch ref { GotoStatement: message = "A \"goto\" statement is used!" LabelStatement: message = "A \"label\" statement is used!" } warning( message, TTCN3Package.eINSTANCE.TTCN3Reference_Name, MessageClass.STYLE.toString, node.startLine.toString, node.endLine.toString, "6.1, " + MiscTools.getMethodName() ); } /** * END: Code Styl e------------------------------------------------------------------------------ */ @Check def checkUniqueNameNestedVariable(RefValue variable) { variable.isNameClashInHierarchy Loading