DataModule dmTest = new DataModule(); 2¡¢·½·¨ÃüÃû£ºÊ××Ö·ûӦСд public class Foo {
public void fooStuff() { } }
3¡¢ÀàÃüÃû£ºÊ××Ö·ûÓ¦´óд public class Foo {} 3.1.2
·½·¨µÄÃüÃûӦעÒâ±ÜÃâÓëjavaÖоßÓÐÌØÊâÒâÒåµÄÃû³ÆÀýÈçequals£¬hashCode£¬clone£¬finalizerµÈ³åÍ» ? ¹æ·¶ÃèÊö£º
ÔÚjavaÖÐijЩ·½·¨ÊǾßÓÐÌØÊâÒâÒåµÄ£¬ÀýÈçboolean equals(Object o)ÊDZȽÏÁ½¸ö¶ÔÏóÊÇ·ñÏàµÈ£»int hashCode()È¡µÃhashÖµ£¬Ö÷ÒªÓÃÓÚhash±í£»Object clone()ÓÃÓÚ¸´ÖƶÔÏó£»void finalizer()ÓÃÓÚ¸ÃÀàʵÀý»¯µÄ¶ÔÏóÊÍ·Åʱϵͳµ÷ÓÃÊͷŸöÔÏóʹÓõÄ×ÊÔ´¡£ÕâЩ·½·¨¾ßÓй̶¨µÄÐβθñʽ£¬¹Ì¶¨µÄ·µ»ØÖµ£¬²»Äܱ»ÆäËûÐÎʽ»òÕßÓÃÓÚÆäËû·½ÃæµÄ·½·¨override£¬·ñÔò½«½µµÍ´úÂë¿É¶ÁÐÔ£¬²¢Îª´úÂëά»¤´øÀ´Òþ»¼¡£
? PMD¹æÔòÃû³Æ£º
SuspiciousEqualsMethodName
SuspiciousHashcodeMethodName£»
FinalizeOverloaded£» BooleanGetMethodName£» ? ¹æÔò¼¶±ð£º
Error High Error High Error High Error High ? Î¥¹æÊ¾Àý´úÂ룺
1¡¢¿ÉÒɵÄequals·½·¨ÃüÃû public class Foo {
public int equals(Object o) {
// oops, this probably was supposed to be boolean equals }
public boolean equals(String s) {
// oops, this probably was supposed to be equals(Object) } }
2¡¢¿ÉÒɵÄhashCodeÃüÃû public class Foo {
public int hashCode(int value) {
// oops, this probably was supposed to be hashCode } }
? ºÏ·¨´úÂëʾÀý£º
1¡¢ÕýÈ·µÄequals·½·¨ÃüÃû public class Foo {
public boolean equals(Object o) {
// oops, this probably was supposed to be boolean equals } }
2¡¢ÕýÈ·µÄhashCodeÃüÃû public class Foo {
public int hashCode() {
// oops, this probably was supposed to be hashCode } }
×¢£ºÒ»°ãÀ´Ëµoverride hashCode·½·¨ÎªÁ˱ÜÃâ¼üÖµ³åÍ»£¬Ìá¸ßhash±íµÄ²éѯЧÂÊ£¬¿É²ÉÓÃ37³Ë·¨ÔÔò£¬ÀýÈçijjavabeanÖаüº¬Á½¸ö¹Ø¼üÊôÐÔstr1£¬str2£¬str3¸Ã¹Ø¼üÊôÐÔ²»ÄÜΪ¿Õ£¬ÕâÆähashÖµ°´ÒÔÏÂËã·¨»ñµÃ£ºstr1.hashCode()+str2.hashCode()*37+str3.hashCode()*37*37¡£ 3.1.3
Java beanÖÐÈ¡µÃbooleanÀàÐ͵ÄÊôÐÔÖµ±ØÐëʹÓÃis****ÐÎʽÃüÃû
? ¹æ·¶ÃèÊö£º
¶ÔÓÚjava beanÀ´Ëµ£¬get***ÊÇÈ¡µÃ¸ÃbeanµÄÊôÐÔÖµ£¬set***ΪÉèÖøÃbeanµÄÊôÐÔÖµ£¬is***ÊÇ»ñµÃ¸ÃbeanÖÐΪbooleanÀàÐ͵ÄÊôÐÔÖµ£¬ÕâЩ·½·¨¶Ôjava beanÀ´ËµÊǾßÓÐÌØÊâÒâÒ壬Èç¹ûÃüÃû²»¹æ·¶½«µ¼ÖÂÔÚʹÓÃjava beanÄÚÖ÷½·¨Ê±³öÏÖȡֵ£¬»òÕßÉèÖµ²»³É¹¦¡£ ? PMD¹æÔòÃû³Æ£º
BooleanGetMethodName ? ¹æÔò¼¶±ð£º
Error High ? Î¥¹æÊ¾Àý´úÂ룺
public boolean getFoo(); // bad ? ºÏ·¨´úÂëʾÀý£º
public boolean isFoo(); // ok
3.1.4 if,else,while,forµÈ±ØÐëʹÓÃ{}
? ¹æ·¶ÃèÊö£º
If,else,while,forµÈ·ÖÖ§Ñ»·Óï¾ä£¬±ØÐëʹÓÃ{}½«ÒµÎñ´¦ÀíÂß¼°üº¬ÔÚÄÚ£¬ÕâÑù¿É´ó´óÌá¸ß´úÂë¿É¶ÁÐÔ£¬ÓÐÀûÓÚºóÐø´úÂëά»¤¡£ ? PMD¹æÔòÃû³Æ£º
IfStmtsMustUseBraces WhileLoopsMustUseBraces IfElseStmtsMustUseBraces ForLoopsMustUseBraces ? ¹æÔò¼¶±ð£º
warn High
? Î¥¹æÊ¾Àý´úÂ룺 1¡¢ifÓï¾äÎ¥Àý´úÂë if (foo) x++;
2¡¢elseÓï¾äÎ¥Àý´úÂë if (foo) x++ else x--;
3¡¢whileÓï¾äÎ¥Àý´úÂë while(x<100) x++;
4¡¢forÓï¾äÎ¥Àý´úÂë for(int i=0;i<10;i++) x++;
? ºÏ·¨´úÂëʾÀý£º 1¡¢ifÓï¾ä if (foo){ x++; }
2¡¢elseÓï¾ä if (foo){ x++ }else{ x--; }
3¡¢whileÓï¾ä while(x<100){ x++; }
5¡¢forÓï¾ä
for(int i=0;i<10;i++){
x++; } 3.1.5
Àà±ØÐë°üº¬ÔÚ°üÀ½ûÖ¹³öÏÖÎÞ°üµÄÀà
? ¹æ·¶ÃèÊö£º
°üÊÇjavaÖÐÀàËùÔÚÃüÃû¿Õ¼ä£¬ÓÃÓÚÀàÔØÈëʱ£¬ÐéÄâ»ú¿ìËÙ¶¨Î»²¢²éÕÒ¸ÃÀࣻÈç¹ûÒ»¸öÎÞ°üÀ࣬ÔÚÀàÔØÈëʱ£¬ºÄʱ½Ï¶à£¬²¢ÇҺܿÉÄÜÎÞ·¨ÕÒµ½¸ÃÀà¡£ ? PMD¹æÔòÃû³Æ£º NoPackage ? ¹æÔò¼¶±ð£º error High 3.1.6
ÀàºÍ·½·¨±ØÐëÓµÓÐ×¢ÊÍ£¬×¢ÊÍÁ¿Õ¼×ÜÌå´úÂë25%ÒÔÉÏ£¬ÀàÍ·²¿£¬ÒÔ¼°·½·¨Í·²¿µÄ×¢ÊÍÓ¦·ûºÏjavadoc±ê×¼¡£ ? ¹æ·¶ÃèÊö£º
×¢ÊͶàÉÙÊÇÆÀ¼Û´úÂëÖÊÁ¿ºÃ»µµÄÒ»¸ö±ê×¼£¬25%ÊÇ·ûºÏ¹ú¼ÊÉ϶Ôjava×¢Ê͵ıê×¼£»¶ÔÓÚÀàÍ·²¿×¢ÊÍ£¬·½·¨Í·²¿×¢ÊÍ·ûºÏjavadoc±ê×¼£¬¿Éjava¹¤¾ß×Ô¶¯¸ù¾ÝÔ´ÂëÉú³ÉÏàÓ¦µÄjava°ïÖúÎĵµ¡£¶ÔÓÚÀàÍ·²¿×¢ÊÍÐèÒª°üº¬ÒÔÏÂÐÅÏ¢£º¸ÃÀàµÄÖ÷Óù¦ÄÜ£¬×÷Õߣ¬ÒÔ¼°´´½¨Ê±¼äµÈÐÅÏ¢£»¶ÔÓÚ·½·¨Í·²¿×¢ÊÍÐèÒª°üº¬ÒÔÏÂÐÅÏ¢£º¸Ã·½·¨µÄÖ÷Òª¹¦ÄÜ£¬ÒÔ¼°²ÎÊýÀàÐͺ¬Ò壬·µ»ØÖµÀàÐͺ¬ÒåµÈµÈ¡£ ? ºÏ·¨´úÂë×¢ÊÍʾÀý 1¡¢ÀàÍ·²¿×¢Ê͹淶
/**
* ʵʱÊý¾ÝÎļþ½âÎö:¶ÁȡʵʱÊý¾ÝÎļþ£¬¶ÔÆäÄÚÈݽøÐнâÎö£¬Éú³É·ûºÏ¸ñʽÒÔ¼°±ê×¼µ¥Î»µÄÊý¾Ý¼¯ºÏ
* @author wangliuyi * @version 1.0 * @since 2009-05-15 */
public class DataFileParse{ 2¡¢·½·¨Í·²¿×¢Ê͹淶
/**
* ÅжϸÃʱ¼äÊÇ·ñÔÚͳ¼ÆÊ±ÇøÀïÃæ
* @param time long ´Óʵʱ²É¼¯ÎļþÖÐÌáÈ¡µÄʱ¼ä£¬¸Ãʱ¼äΪ¸ñÁÖÍþÖÎʱ¼ä£¬µ¥Î»ÎªºÁÃë * @return boolean true£º±íʾ¸Ãʱ¼äÔںϷ¨µÄʱ¼äÇøÄÚ false£º±íʾ¸Ãʱ¼ä²»ºÏ·¨ */
public boolean checkStatTimeZone(long time)