2016-08-17 20 views
5

Geçtiğimiz günlerde kodumun şifrelerinin String numaralı yeni bir Password sınıfına işlendiği tüm yerleri değiştirdim. Password.toString() yöntemi şimdi [********]'u yazdırıyor. Şifreyi almak istersem, Password.getPassword()'u aramam gerek. Bu sayede kayıt dosyalarına hiç bir şifre yazılmayacağından emin olabilirim. Belirli bir tür için toString() yönteminin örtülü kullanım biçimleri nasıl bulunur

değişim sırasında şuna benzer bazı satırları değiştirmek cevapsız:

String.format("user:%s", password); 

password üstüm önce tip String ait olduğunu, bu yüzden istediğiniz gibi o biçimlendirilmiştir. Ancak, password değiştirmemden sonra [*******] olarak oluşturuldu. Tam olarak istediğim buydu. Ama şimdi tüm bu yerleri otomatik olarak bulmak istiyorum.

ben fb-contrib eklenti ( ITU_INAPPROPRIATE_TOSTRING_USE) ile findbugs denedik ama String.format içinde Password.toString() zımni kullanımını bulamadık().

Başka bir findbugs katkı projesi veya bu kod yerlerini bulabilecek başka herhangi bir statik kod çözümleyicisini bilen var mı?

cevap

0

ITU, yalnızca içeriğin değerini çıkarıp, bir değer için ayrışıyorsanız veya başka bir dize oluşturmak için kullanmakta kullandığınız toString() öğesinin kullanımını bulur. Dedektör, birçok durumda, 'hata ayıklama' çıktısı olarak ele alınacak olan toString() içeriğine güvenmemeniz gerektiğini bilmenizi ister. (burada gördüğünüz gibi).

Her zaman geçerli olan toString() kullanımlarını kontrol etmek için birçok yanlış pozitif yol vardır.

Ve hayır, hiçbir dedektörden haber alamazsınız, bir tane yazmak oldukça kolay olurdu.

İlgili konular