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