İkisini de kullanıyorum. Birbirlerini tamamladıklarını düşünüyorum.
Söylediğiniz gibi, PMD kaynak kodu üzerinde çalışır ve bu nedenle: adlandırma kurallarının ihlali, küme parantezlerinin olmaması, yanlış yerleştirilmiş boş kontrol, uzun parametre listesi, gereksiz kurucu, anahtarda eksik kesinti vb. Gibi sorunları bulur. çok yararlı bulduğum kodunuzun karmaşıklığı (FindBugs size Döngüsel karmaşıklıktan bahsetmez).
FindBugs , bayt kodu üzerinde çalışır. FindBugs'un PMD'nin bulamadığı bazı problemler şunlardır: equals () yöntemi alt türlerde başarısız olur, klon yöntemi boş döndürebilir, Boole değerlerinin referans karşılaştırması, imkansız çevrim, 32bit int 0-31 aralığında olmayan bir miktarda kaydırılır, kendini içeren bir koleksiyon, eşittir yöntemi her zaman true, sonsuz döngü vb. döndürür.
Genellikle her biri farklı bir dizi problem bulur. İkisini de kullan. Bu araçlar bana Java kodunun nasıl yazılacağı konusunda çok şey öğretti.