PMD e/ou CheckStyle

Gostaria de saber de quem já conhece qual a finalidade destas duas ferramentas, pelo que entendi uma delas server para padronizar a formatação da codificação, e a outra encontrar problemas ou possível problemas no código fonte, estou certo? É recomendavel usar as duas ferramentas em um mesmo projeto para aumentar a qualidade do software.

Ao entrar no site do PMD obtive a seguinte descrição:

PMD scans Java source code and looks for potential problems like:

    * Possible bugs - empty try/catch/finally/switch statements
    * Dead code - unused local variables, parameters and private methods
    * Suboptimal code - wasteful String/StringBuffer usage
    * Overcomplicated expressions - unnecessary if statements, for loops that could be while loops
    * Duplicate code - copied/pasted code means copied/pasted bugs

e no CheckSytle:

Checkstyle is a development tool to help programmers write Java code
that adheres to a coding standard. It automates the process of checking
Java code to spare humans of this boring (but important) task. 
This makes it ideal for projects that want to enforce a coding standard.

Use os dois.

Use as duas, adapte/crie as regras que lhe são relevantes e seja feliz. Note, não precisa seguir 100% a fio as regras que ele traz como padrão, mas uma vez suas regras definidas, tente seguir a fio.