PMD 5.5.3/5.4.4 ·¢²¼ÁË¡£PMD ÊÇÒ»¿î²ÉÓà BSD ÐÒé·¢²¼µÄ Java ³ÌÐò´úÂë¼ì²é¹¤¾ß¡£¸Ã¹¤¾ß¿ÉÒÔ×öµ½¼ì²é Java ´úÂëÖÐÊÇ·ñº¬ÓÐδʹÓõıäÁ¿¡¢ÊÇ·ñº¬ÓпյÄץȡ¿é¡¢ÊÇ·ñº¬Óв»±ØÒªµÄ¶ÔÏóµÈ¡£¸ÃÈí¼þ¹¦ÄÜÇ¿´ó£¬É¨ÃèЧÂʸߣ¬ÊÇ Java ³ÌÐòÔ± debug µÄºÃ°ïÊÖ¡£
PMD 5.5.3 ¸üÐÂÄÚÈÝ£º
×îÖØÒªµÄ¸ü¸ÄÊÇÔÚ·ÖÎöÐÔÄÜ·½ÃæºÍÒ»¸öÈ«Ð嵀 Apex °²È«¹æÔò¼¯¡£
Apex °²È«¹æÔò¼¯
Ôö¼ÓÁËÒ»¸öרעÓÚ°²È«ÐÔµÄйæÔò¼¯£¬ÆäÖаüº¬´óÁ¿¹æÔòÀ´¼ì²â×î³£¼ûµÄ°²È«ÎÊÌâ¡£[code]ApexBadCrypto
public class without sharing Foo {
Blob hardCodedIV = Blob.valueOf('Hardcoded IV 123');
Blob hardCodedKey = Blob.valueOf('0000000000000000');
Blob data = Blob.valueOf('Data to be encrypted');
Blob encrypted = Crypto.encrypt('AES128', hardCodedKey, hardCodedIV, data);
}
ApexCRUDViolation
public class Foo {
public Contact foo(String status, String ID) {
Contact c = [SELECT Status__c FROM Contact WHERE Id=:ID];// Make sure we can update the database before even trying
if (!Schema.sObjectType.Contact.fields.Name.isUpdateable()) {
return null;
}
c.Status__c = status;
update c;
return c;
}
}[/code]ÏêϸÄÚÈݼ°ÏÂÔØµØÖ·µã»÷·¢ÐÐ˵Ã÷½øÐв鿴
PMD 5.4.4 ¸üÐÂÄÚÈÝ£º
ÕâÊÇÒ»¸ö bug ÐÞ¸´°æ±¾£¬Ã»ÓÐÒýÈëÈκÎÖ÷ÒªµÄ¸ü¸Ä£¬×îÖØÒªµÄ±ä»¯ÊÇÔÚ·ÖÎöÐÔÄÜ·½Ãæ¡£
Òѱ»Ð޸ĵĹæÔò
Java ¹æÔò "UseLocaleWithCaseConversions"£¨ruleset java-design£©Òѱ»Ð޸ģ¬ÒÔ¼ì²â¶Ô·½·¨µ÷ÓÃÁ´ÖÐ¶Ô toLowerCase ºÍ toUpperCase µÄµ÷Óá£Õâµ¼Ö¸ü¶àµÄ¼ì²âµ½µÄÇé¿öºÍDZÔÚµÄеļÙÑôÐÔ¡£
ÏêϸÄÚÈݼ°ÏÂÔØµØÖ·µã»÷·¢ÐÐ˵Ã÷½øÐв鿴
À´×Ô:¿ªÔ´ÖйúÉçÇø

