Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/374.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
SonarQube for Java:确保在此处安全使用命令行参数_Java_Sonarqube - Fatal编程技术网

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

SonarQube for Java在以下代码中抱怨:“确保此处安全使用命令行参数”:

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
方法来进行正确的单元测试——因此这种方法是特意实现的。