Si está utilizando System.out | err.println (..) para imprimir información de usuario en la consola en el método main() de la aplicación, no hace nada incorrecto. Puede deshacerse del mensaje insertando un comentario "// NOPMD".
System.out.println("Fair use of System.out.println(..).");// NOPMD
Hay una "Marca como revisada" -Opción en el Esquema de violaciones de PMD para este propósito.
Por supuesto se puede engañar con PMD siguiente fragmento de código:
PrintStream out=System.out;
out.println("I am fooling PMD.");
Fuera de su main() - Método de uso de un registro de sistema como por ejemplo Log4j.
ACTUALIZACIÓN:
También puede modificar el PMD-Regla "SystemPrintln", para usar la siguiente 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')
]
Esto ignorará System.out.println etc en cualquier método denominado ' main 'en su código, pero verifique System.out.println en el código del inicializador. Me gusta esto, porque desde mi punto de vista, System.out.println es seguro en el método 'main (String args [])'. Pero use con precaución, tengo que verificar, donde en el AST también puede ocurrir System.out.println y tengo que adaptar el XPath.
Vea también esta pregunta reciente: http://stackoverflow.com/questions/2746578/advantage-of-log4j – BalusC