Bug 563666 - Fix Sonar issues to improve code quality
diff --git a/load_generator/linux/plugins/org.eclipse.app4mc.slg.linux/src/org/eclipse/app4mc/slg/linux/generators/LinuxLabelGenerator.xtend b/load_generator/linux/plugins/org.eclipse.app4mc.slg.linux/src/org/eclipse/app4mc/slg/linux/generators/LinuxLabelGenerator.xtend
index fe41d0b..7d121b1 100644
--- a/load_generator/linux/plugins/org.eclipse.app4mc.slg.linux/src/org/eclipse/app4mc/slg/linux/generators/LinuxLabelGenerator.xtend
+++ b/load_generator/linux/plugins/org.eclipse.app4mc.slg.linux/src/org/eclipse/app4mc/slg/linux/generators/LinuxLabelGenerator.xtend
@@ -40,84 +40,87 @@
 	
 	'''
 
-	static def String toCpp(Label label) '''
-	int «label.name»[«AmaltheaModelUtils.getLabelArraySize(label)»];
+	static def String toCpp(Label label) {
+		val name = if (label?.name.isNullOrEmpty) "<undefined label>" else label.name
+		val numberOfBytes = if (label?.size === null) 0 else label.size.numberBytes
 
-	static bool isIinitialized_«label.name» = false;
-	void «initCall(label)» {
-		if (!isIinitialized_«label.name»){
-			int i;
-			for (i=0; i < «AmaltheaModelUtils.getLabelArraySize(label)»; i++){
-				«label.name»[i] = i+1;
-			}
-			isIinitialized_«label.name» = true;
-		}
-	}
+		'''
+		int «name»[«AmaltheaModelUtils.getLabelArraySize(label)»];
 
-	
-	void «readCall(label, "int labelAccessStatistics")» {
-		int numberOfBytes = «label?.size?.numberBytes»;
-		int repeat;
-		for (repeat = 0 ; repeat < labelAccessStatistics; repeat++){
-			if(numberOfBytes < 4){
-				numberOfBytes = 4;
-			}
-			int arraysize = sizeof(«label.name») / 4;
-			
-			//printf("number of bytes:»d\n",arraysize);
-			int leftOverElements=arraysize»10;
-			
-			int arraySizeWith10Multiples=arraysize-leftOverElements;
-			int i = 0;
-			int a = 0;
-			for (i = 0; i < arraySizeWith10Multiples; i = i + 10) {           //iteration with 10 reads
-				a = «label.name»[i];
-				a = «label.name»[i+1];
-				a = «label.name»[i+2];
-				a = «label.name»[i+3];
-				a = «label.name»[i+4];
-				a = «label.name»[i+5];
-				a = «label.name»[i+6];
-				a = «label.name»[i+7];
-				a = «label.name»[i+8];
-				a = «label.name»[i+9];
-			}
-			for(;i<arraysize;i++){
-				a = «label.name»[i];
+		static bool isIinitialized_«name» = false;
+		void «initCall(label)» {
+			if (!isIinitialized_«name»){
+				int i;
+				for (i=0; i < «AmaltheaModelUtils.getLabelArraySize(label)»; i++){
+					«name»[i] = i+1;
+				}
+				isIinitialized_«name» = true;
 			}
 		}
-	}
 
-	void «writeCall(label, "int labelAccessStatistics")» {
-		int numberOfBytes = «label.size?.numberBytes»;
-		int repeat;
-		for (repeat = 0 ; repeat < labelAccessStatistics; repeat++){
-			if(numberOfBytes < 4){
-				numberOfBytes = 4;
-			}
-			int arraysize = sizeof(«label.name») / 4;
-			int leftOverElements=arraysize»10;
-			int arraySizeWith10Multiples=arraysize-leftOverElements;
-			
-			int i = 0;
-			for (i = 0; i < arraySizeWith10Multiples; i = i + 10) {
-				«label.name»[i]   = 0xAFFE;
-				«label.name»[i+1] = 0xAFFE;
-				«label.name»[i+2] = 0xAFFE;
-				«label.name»[i+3] = 0xAFFE;
-				«label.name»[i+4] = 0xAFFE;
-				«label.name»[i+5] = 0xAFFE;
-				«label.name»[i+6] = 0xAFFE;
-				«label.name»[i+7] = 0xAFFE;
-				«label.name»[i+8] = 0xAFFE;
-				«label.name»[i+9] = 0xAFFE;
-			}
-			for(;i<arraysize;i++){
-					«label.name»[i]=0xAFFE;
+		void «readCall(label, "int labelAccessStatistics")» {
+			int numberOfBytes = «numberOfBytes»;
+			int repeat;
+			for (repeat = 0 ; repeat < labelAccessStatistics; repeat++){
+				if(numberOfBytes < 4){
+					numberOfBytes = 4;
+				}
+				int arraysize = sizeof(«name») / 4;
+				
+				//printf("number of bytes:»d\n",arraysize);
+				int leftOverElements=arraysize»10;
+				
+				int arraySizeWith10Multiples=arraysize-leftOverElements;
+				int i = 0;
+				int a = 0;
+				for (i = 0; i < arraySizeWith10Multiples; i = i + 10) {           //iteration with 10 reads
+					a = «name»[i];
+					a = «name»[i+1];
+					a = «name»[i+2];
+					a = «name»[i+3];
+					a = «name»[i+4];
+					a = «name»[i+5];
+					a = «name»[i+6];
+					a = «name»[i+7];
+					a = «name»[i+8];
+					a = «name»[i+9];
+				}
+				for(;i<arraysize;i++){
+					a = «name»[i];
+				}
 			}
 		}
-	}
-	
-	'''
 
+		void «writeCall(label, "int labelAccessStatistics")» {
+			int numberOfBytes = «numberOfBytes»;
+			int repeat;
+			for (repeat = 0 ; repeat < labelAccessStatistics; repeat++){
+				if(numberOfBytes < 4){
+					numberOfBytes = 4;
+				}
+				int arraysize = sizeof(«name») / 4;
+				int leftOverElements=arraysize»10;
+				int arraySizeWith10Multiples=arraysize-leftOverElements;
+				
+				int i = 0;
+				for (i = 0; i < arraySizeWith10Multiples; i = i + 10) {
+					«name»[i]   = 0xAFFE;
+					«name»[i+1] = 0xAFFE;
+					«name»[i+2] = 0xAFFE;
+					«name»[i+3] = 0xAFFE;
+					«name»[i+4] = 0xAFFE;
+					«name»[i+5] = 0xAFFE;
+					«name»[i+6] = 0xAFFE;
+					«name»[i+7] = 0xAFFE;
+					«name»[i+8] = 0xAFFE;
+					«name»[i+9] = 0xAFFE;
+				}
+				for(;i<arraysize;i++){
+						«name»[i]=0xAFFE;
+				}
+			}
+		}
+		
+		'''
+	}
 }
diff --git a/load_generator/ros2/plugins/org.eclipse.app4mc.slg.ros2/src/org/eclipse/app4mc/slg/ros2/transformers/sw/RosRunnableTransformer.java b/load_generator/ros2/plugins/org.eclipse.app4mc.slg.ros2/src/org/eclipse/app4mc/slg/ros2/transformers/sw/RosRunnableTransformer.java
index 6cf53b7..1c322aa 100644
--- a/load_generator/ros2/plugins/org.eclipse.app4mc.slg.ros2/src/org/eclipse/app4mc/slg/ros2/transformers/sw/RosRunnableTransformer.java
+++ b/load_generator/ros2/plugins/org.eclipse.app4mc.slg.ros2/src/org/eclipse/app4mc/slg/ros2/transformers/sw/RosRunnableTransformer.java
@@ -66,8 +66,8 @@
 
 		// Compute characteristic values of runnable
 
-		String param = "";
-		String nodeParam = "";
+		final List<String> params = new ArrayList<>();
+		final List<String> nodeParams = new ArrayList<>();
 		final List<String> publishers = new ArrayList<>();
 		final List<String> clientDeclarations = new ArrayList<>();
 		final List<String> clientInits = new ArrayList<>();
@@ -88,29 +88,22 @@
 					Channel data = cs.getData();
 
 					publishers.add(data.getName() + "_publisher");
-
-					nodeParam = nodeParam + ((nodeParam.equals("")) ? "" : ";") + data.getName() + "_publisher";
-					param = ((param.equals("")) ? "" : ";") + "rclcpp::Publisher<std_msgs::msg::String>::SharedPtr& "
-							+ data.getName() + "_publisher";
+					nodeParams.add(data.getName() + "_publisher");
+					params.add("rclcpp::Publisher<std_msgs::msg::String>::SharedPtr& " + data.getName() + "_publisher");
 				}
 
 				if (item instanceof InterProcessTrigger) {
 					InterProcessTrigger trigger = (InterProcessTrigger) item;
 					InterProcessStimulus stimulus = trigger.getStimulus();
-					
-					includes.add(stimulus.getName() + "_service/srv/" + stimulus.getName() + "_service" + ".hpp");
-					clientDeclarations.add(
-							"rclcpp::Client<" + stimulus.getName() + "_service::srv::"
-							+ Utils.toIdlCompliantName(stimulus.getName() + "_service")
-							+ ">::SharedPtr " + stimulus.getName() + "_client");
-					clientInits.add(
-							stimulus.getName() + "_client =  this->create_client<" + stimulus.getName() + "_service::srv::"
-							+ Utils.toIdlCompliantName(stimulus.getName() + "_service") + ">"
-							+ "(\"" + stimulus.getName() + "_service\")");
-					nodeParam = nodeParam + (nodeParam.equals("") ? "" : ";") + stimulus.getName() + "_client";
-					param = (param.equals("") ? "" : ";") + "rclcpp::Client<"
-							+ stimulus.getName() + "_service::srv::" + Utils.toIdlCompliantName(stimulus.getName() + "_service")
-							+ ">::SharedPtr& " + stimulus.getName() + "_client";
+
+					String stimName = stimulus.getName();
+					String idlName = Utils.toIdlCompliantName(stimName + "_service");
+
+					includes.add(stimName + "_service/srv/" + stimName + "_service" + ".hpp");
+					clientDeclarations.add("rclcpp::Client<" + stimName + "_service::srv::" + idlName + ">::SharedPtr " + stimName + "_client");
+					clientInits.add(stimName + "_client =  this->create_client<" + stimName + "_service::srv::" + idlName + ">" + "(\"" + stimName + "_service\")");
+					nodeParams.add(stimName + "_client");
+					params.add("rclcpp::Client<" + stimName + "_service::srv::" + idlName + ">::SharedPtr& " + stimName + "_client");
 				}
 
 				final String call = graphItemTU.getCall();
@@ -120,6 +113,9 @@
 			}
 		}
 
+		String nodeParam = String.join(";", nodeParams);
+		String param = String.join(";", params);
+
 		// store characteristic values in runnable cache
 		rosRunnableCache.storeValues(tu, runnable, param, nodeParam, publishers, clientDeclarations, clientInits);