Если вы используете System.out | err.println (..) для распечатки информации о пользователе на консоли в методе main () вашего приложения, вы ничего не делаете неправильно. Вы можете избавиться от сообщения, вставив комментарий "// NOPMD".
System.out.println("Fair use of System.out.println(..).");// NOPMD
Для этой цели в наброске нарушений PMD имеется опция «Пометить как проверенную».
Конечно, вы можете обмануть PMD с помощью следующего фрагмента кода:
PrintStream out=System.out;
out.println("I am fooling PMD.");
Вне вашего main () - метод использует Log-систему, например, Log4j.
UPDATE:
Вы также можете изменить правило PMD "SystemPrintln", чтобы использовать следующий XPath:
//MethodDeclaration[@MethodName!="main"]//Name[
starts-with(@Image, 'System.out.print')
or
starts-with(@Image, 'System.err.print')
] | //Initializer//Name[
starts-with(@Image, 'System.out.print')
or
starts-with(@Image, 'System.err.print')
]
Это будет игнорировать System.out.println и т. Д. В любом методе с именем 'main' в вашем коде, но проверьте наличие System.out.println в коде инициализатора.
Мне это нравится, потому что, с моей точки зрения, System.out.println безопасен в методе main (String args []). Но используйте с осторожностью, я должен проверить, где в AST может также возникнуть System.out.println и должен адаптировать XPath.