SonarQube for Java:确保在此处安全使用命令行参数
SonarQube for Java在以下代码中抱怨:“确保此处安全使用命令行参数”:SonarQube for Java:确保在此处安全使用命令行参数,java,sonarqube,Java,Sonarqube,SonarQube for Java在以下代码中抱怨:“确保此处安全使用命令行参数”: public class Test { public static void main(String[] args) { try { System.out.print(returnSum(args)); } catch (NumberFormatException nfe) { System.out.println(&q
public class Test {
public static void main(String[] args) {
try {
System.out.print(returnSum(args));
} catch (NumberFormatException nfe) {
System.out.println("main: Input argument should be a number");
}
}
public static int returnSum(String[] args) {
int sum = 0;
if (args.length > 0) {
try {
for (String arg : args)
sum += Integer.parseInt(arg);
} catch (NumberFormatException nfe) {
System.out.println("returnSum: Input argument should be a number");
throw nfe;
}
}
return sum;
}
}
为了满足SonarQube的要求,我还缺少什么呢?这似乎是一个例子。它不希望您按原样将命令行参数数组传递给另一个方法。相反,它认为应该在
main
方法中对它们进行清理
一种方法是在main方法中进行字符串到整数的转换,然后使用生成的数字数组是“安全的”:
int[] numbers = new int[args.length];
for (int i = 0; i < args.length; i++) {
numbers[i] = Integer.parseInt(args[i]);
}
System.out.print(returnSum(numbers));
int[]numbers=newint[args.length];
对于(int i=0;i
这似乎是一个问题。它不希望您按原样将命令行参数数组传递给另一个方法。相反,它认为应该在main
方法中对它们进行清理
一种方法是在main方法中进行字符串到整数的转换,然后使用生成的数字数组是“安全的”:
int[] numbers = new int[args.length];
for (int i = 0; i < args.length; i++) {
numbers[i] = Integer.parseInt(args[i]);
}
System.out.print(returnSum(numbers));
int[]numbers=newint[args.length];
对于(int i=0;i
非常感谢您的及时帮助,Joni!不幸的是,您的建议无助于删除SonarQube的警告:(另外,为了正确的单元测试,我特意提取了returnSum
方法-因此这种方法是特意实现的。非常感谢您的及时帮助,Joni!您的建议无助于删除SonarQube的警告,不幸的是:(另外,我特意提取了returnSum
方法来进行正确的单元测试——因此这种方法是特意实现的。