Nếu bạn đang sử dụng System.out | err.println (..) để in ra thông tin người dùng trên bàn điều khiển trong phương thức main() của ứng dụng, bạn không làm gì sai. Bạn có thể loại bỏ thông điệp bằng cách chèn một chú thích "// NOPMD".
System.out.println("Fair use of System.out.println(..).");// NOPMD
Có "Đánh dấu là đã đánh giá" - Tùy chọn trong Phác thảo vi phạm PMD cho mục đích này.
Tất nhiên bạn có thể đánh lừa PMD với đoạn mã sau:
PrintStream out=System.out;
out.println("I am fooling PMD.");
Bên ngoài của bạn main() - Phương pháp sử dụng một Log-System như ví dụ Log4j.
UPDATE:
Bạn cũng có thể thay đổi PMD-Rule "SystemPrintln" để sử dụng XPath sau:
//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')
]
này sẽ bỏ qua System.out.println vv trong bất kỳ phương thức có tên ' chính 'trong mã của bạn, nhưng kiểm tra System.out.println trong mã khởi tạo. Tôi thích điều này, vì theo quan điểm của tôi, System.out.println là an toàn trong phương thức 'chính (String args [])'. Nhưng sử dụng thận trọng, tôi phải kiểm tra, ở đâu trong AST, System.out.println cũng có thể xảy ra và phải thích ứng với XPath.
Nguồn
2010-05-01 15:47:41
Cũng thấy câu hỏi gần đây: http://stackoverflow.com/questions/2746578/advantage-of-log4j – BalusC