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);