锘??xml version="1.0" encoding="utf-8" standalone="yes"?> 銆銆Java Excel API 鏂囨。 銆銆http://www.andykhan.com/jexcelapi/
http://qa.taobao.com/?p=9015
闈欐佹鏌?/strong>:闈欐佹祴璇曞寘鎷唬鐮佹鏌ャ侀潤鎬佺粨鏋勫垎鏋愩佷唬鐮佽川閲忓害閲忕瓑銆傚畠鍙互鐢變漢
宸ヨ繘琛岋紝鍏呭垎鍙戞尌浜虹殑閫昏緫鎬濈淮浼樺娍錛屼篃鍙互鍊熷姪杞歡宸ュ叿鑷姩榪涜銆?br />
浠g爜媯鏌ヤ唬鐮佹鏌ュ寘鎷唬鐮佽蛋鏌ャ佹闈㈡鏌ャ佷唬鐮佸鏌ョ瓑錛屼富瑕佹鏌ヤ唬鐮佸拰
璁捐鐨勪竴鑷存э紝 浠g爜瀵規爣鍑嗙殑閬靛驚銆佸彲璇繪э紝浠g爜鐨勯昏緫琛ㄨ揪鐨勬紜э紝浠?br />
鐮佺粨鏋勭殑鍚堢悊鎬х瓑鏂歸潰錛涘彲浠ュ彂鐜拌繚鑳岀▼搴忕紪鍐欐爣鍑嗙殑闂錛岀▼搴忎腑涓嶅畨鍏ㄣ?br />
涓嶆槑紜拰妯$硦鐨勯儴鍒嗭紝鎵懼嚭紼嬪簭涓笉鍙Щ妞嶉儴鍒嗐佽繚鑳岀▼搴忕紪紼嬮鏍肩殑闂錛?br />
鍖呮嫭鍙橀噺媯鏌ャ佸懡鍚嶅拰綾誨瀷瀹℃煡銆佺▼搴忛昏緫瀹℃煡銆佺▼搴忚娉曟鏌ュ拰紼嬪簭緇撴瀯
媯鏌ョ瓑鍐呭銆?#8221;銆傜湅浜嗕竴緋誨垪鐨勯潤鎬佷唬鐮佹壂鎻忔垨鑰呭彨闈欐佷唬鐮佸垎鏋愬伐鍏峰悗錛?br />
鎬葷粨瀵瑰伐鍏風殑鐪嬫硶錛氶潤鎬佷唬鐮佹壂鎻忓伐鍏鳳紝鍜岀紪璇戝櫒鐨勬煇浜涘姛鑳藉叾瀹炴槸寰堢浉浼肩殑錛?br />
浠栦滑涔熼渶瑕佽瘝娉曞垎鏋愶紝璇硶鍒嗘瀽錛岃鎰忓垎鏋?..浣嗗拰緙栬瘧鍣ㄤ笉涓鏍風殑鏄粬浠彲
浠ヨ嚜瀹氫箟鍚勭鍚勬牱鐨勫鏉傜殑瑙勫垯鍘誨浠g爜榪涜鍒嗘瀽銆?strong>
闈欐佹嫻嬪伐鍏?/strong>:
1)PMD鏄竴涓唬鐮佹鏌ュ伐鍏鳳紝瀹冪敤浜庡垎鏋?Java 婧愪唬鐮侊紝鎵懼嚭娼滃湪鐨?闂錛?
1)娼滃湪鐨刡ug錛氱┖鐨則ry/catch/finally/switch璇彞
2)鏈嬌鐢ㄧ殑浠g爜錛氭湭浣跨敤鐨勫眬閮ㄥ彉閲忋佸弬鏁般佺鏈夋柟娉曠瓑
3)鍙夌殑浠g爜錛歋tring/StringBuffer鐨勬互鐢?
4)澶嶆潅鐨勮〃杈懼紡錛氫笉蹇呴』鐨刬f璇彞銆佸彲浠ヤ嬌鐢╳hile寰幆瀹屾垚鐨刦or寰幆
5)閲嶅鐨勪唬鐮侊細鎷瘋礉/綺樿創浠g爜鎰忓懗鐫鎷瘋礉/綺樿創bugs
2)PMD鐗圭偣錛?
1)涓庡叾浠栧垎鏋愬伐鍏蜂笉鍚岀殑鏄紝PMD閫氳繃闈欐佸垎鏋愯幏鐭ヤ唬鐮侀敊璇備篃灝辨槸璇達紝鍦?
涓嶈繍琛孞ava紼嬪簭鐨勬儏鍐典笅鎶ュ憡閿欒銆?
2)PMD闄勫甫浜嗚澶氬彲浠ョ洿鎺ヤ嬌鐢ㄧ殑瑙勫垯錛屽埄鐢ㄨ繖浜涜鍒欏彲浠ユ壘鍑篔ava婧愮▼搴忕殑璁?
澶氶棶棰?
3)鐢ㄦ埛榪樺彲浠ヨ嚜宸卞畾涔夎鍒欙紝媯鏌ava浠g爜鏄惁絎﹀悎鏌愪簺鐗瑰畾鐨勭紪鐮佽鑼冦?
3)鍚屾椂錛孭MD宸茬粡涓嶫Developer銆丒clipse銆乯Edit銆丣Builder銆?a >BlueJ銆?
CodeGuide銆丯etBeans銆丼un JavaStudio Enterprise/Creator銆?
IntelliJ IDEA銆乀extPad銆丮aven銆丄nt銆丟el銆丣Creator浠ュ強Emacs
闆嗘垚鍦ㄤ竴璧楓?
4)PMD瑙勫垯鏄彲浠ュ畾鍒剁殑: 鍙敤鐨勮鍒欏茍涓嶄粎闄愪簬鍐呯疆瑙勫垯銆傛偍鍙互娣誨姞鏂拌鍒欙細
鍙互閫氳繃緙栧啓 Java 浠g爜騫墮噸鏂扮紪璇?PDM錛屾垨鑰呮洿綆鍗曚簺錛岀紪鍐?XPath 琛?
杈懼紡錛屽畠浼氶拡瀵規瘡涓?Java 綾葷殑鎶借薄璇硶鏍戣繘琛屽鐞嗐?
5)鍙嬌鐢≒DM鍐呯疆瑙勫垯錛孭MD 涔熷彲浠ユ壘鍒頒綘浠g爜涓殑涓浜涚湡姝i棶棰樸傛煇浜涢棶棰樺彲鑳?
寰堝皬錛屼絾鏈変簺闂鍒欏彲鑳藉緢澶с侾MD 涓嶅彲鑳芥壘鍒版瘡涓?bug錛屼綘浠嶇劧闇瑕佸仛鍗曞厓嫻?
璇曞拰鎺ュ彈嫻嬭瘯錛屽湪鏌ユ壘宸茬煡 bug 鏃訛紝鍗充嬌鏄?PMD 涔熸棤娉曟浛浠d竴涓ソ鐨勮皟璇曞櫒銆?
浣嗘槸錛孭MD 紜疄鍙互甯姪浣犲彂鐜版湭鐭ョ殑闂銆?
1)FindBugs鏄竴涓紑婧愮殑闈欐佷唬鐮佸垎鏋愬伐鍏鳳紝鍩轟簬LGPL寮婧愬崗璁紝鏃犻渶
榪愯灝辮兘瀵逛唬鐮佽繘琛屽垎鏋愮殑宸ュ叿銆備笉娉ㄩ噸style鍙奻ormat錛屾敞閲嶆嫻嬬湡姝?
鐨刡ug鍙婃綔鍦ㄧ殑鎬ц兘闂 錛屽挨鍏舵敞鎰忎簡灝藉彲鑳芥姂鍒惰媯嫻?false positives)
鐨勫彂鐢熴備互bytecode錛?.class銆?.jar錛変負瀵硅薄榪涜媯鏌ャ傞櫎浜嗗崟鐙姩浣滐紝榪樺彲
浠ョ敤浣淓clipse 鐨刾lug-in錛屼互鍙婂祵鍏nt浣滀負task涔嬩竴 榪涜鍒╃敤銆?
2)findbugs鑷甫媯嫻嬪櫒鐨勪粙緇? findbugs鑷甫60浣欑Bad practice錛?0浣欑
Correntness錛?縐岻nternationalization錛?2縐峂alicious code
vulnerability錛?7縐峂ultithreaded correntness錛?3縐峆erformance錛?
43縐岲odgy銆?
3)Findbugs鐨勪竴浜涚壒鐐癸細
1)FindBugs涓昏鐫鐪間簬瀵繪壘浠g爜涓殑緙洪櫡錛岃繖灝變笌鍏朵粬綾諱技宸ュ叿鏈変簺鍖哄埆浜嗭紝
鐩存帴鎿嶄綔綾繪枃浠訛紙class鏂囦歡錛夎屼笉鏄簮浠g爜銆?
2)FindBugs鍙互閫氳繃鍛戒護琛屻佸悇縐嶆瀯寤哄伐鍏鳳紙濡侫nt銆丮aven絳夛級銆佺嫭绔嬬殑
Swing GUI鎴栨槸浠clipse鍜孨etBeans IDE鎻掍歡鐨勬柟寮忔潵榪愯銆?nbsp;
3)FindBugs杈撳嚭緇撴灉鏃㈠彲浠ユ槸XML鐨勶紝涔熷彲浠ユ槸鏂囨湰褰㈠紡鐨勩?
4)寮鍙戣呭彲浠ラ氳繃澶氱鏂瑰紡鏉ヤ嬌鐢‵indBugs錛屾渶甯歌鐨勬槸鍦ㄦ柊緙栧啓妯″潡鐨勪唬鐮?
鍒嗘瀽浠ュ強瀵圭幇鏈変唬鐮佽繘琛屾洿澶ц寖鍥寸殑鍒嗘瀽銆?nbsp;
5)涓嶆敞閲峴tyle鍙奻ormat錛屾敞閲嶆嫻嬬湡姝g殑bug鍙婃綔鍦ㄧ殑鎬ц兘闂錛?
灝ゅ叾娉ㄦ剰浜嗗敖鍙兘鎶戝埗璇嫻?false positives)鐨勫彂鐢熴?nbsp;
4)FindBugs鍙嫻嬬殑bug pattern涓句緥:
媯嫻媕ava programing涓鏄撻櫡鍏ョ殑bug pattern錛宔quals() 瀹炵幇鏃剁殑涓鑸綰﹁繚鍙?
Null pointer鐨勫弬鐓?錛孧ethod鐨勮繑鍥炲肩殑check閬楁紡 錛屽垵濮嬪寲鍓峟ield鐨勮闂紝
Multi-thread鐨勬紜э紝 鍚屾湡鍖栧鐞嗙殑鐭涚浘錛?鏃犳潯浠剁殑wait()錛?nbsp; Code鐨勮剢寮辨?錛?
鍙互鍙樻洿鐨勯潤鎬乷bject 錛屽唴閮ㄦ暟鍒楀弬鐓х殑return絳?
1)瀹氫箟錛?Checkstyle鏄竴嬈炬鏌ava紼嬪簭婧愪唬鐮佹牱寮忕殑宸ュ叿銆?
2)鐗圭偣錛?
1)瀹冨彲浠ユ湁鏁堢殑甯姪鎴戜滑媯瑙嗕唬鐮佷互渚挎洿濂界殑閬靛驚浠g爜緙栧啓鏍囧噯錛岀壒
鍒傜敤浜庡皬緇勫紑鍙戞椂褰兼闂寸殑鏍峰紡瑙勮寖鍜岀粺涓銆?
2)Checkstyle鎻愪緵浜嗛珮鍙厤緗э紝浠ヤ究閫傜敤浜庡悇縐嶄唬鐮佽鑼冿紝鎵浠?
闄や簡浣跨敤瀹冩彁渚涚殑鍑犵甯歌鏍囧噯涔嬪錛屼綘涔熷彲浠ュ畾鍒惰嚜宸辯殑鏍囧噯銆?
3)Checkstyle鎻愪緵浜嗘敮鎸佸ぇ澶氭暟甯歌IDE鐨勬彃浠訛紝澶ч儴鍒嗘彃浠朵腑灝卞惈鏈?
鏈鏂扮殑Checkstyle錛屽氨涓嶇敤璐瑰績鍐嶉儴緗蹭竴浠戒簡銆?
4)Checkstyle鍙互媯鏌ヤ唬鐮佺殑寰堝鏂歸潰錛屼粠浼犵粺瑙傜偣鐪嬶紝瀹冧富瑕佹槸鐢ㄦ潵
媯鏌ヤ唬鐮佸眰闈㈢殑錛岃嚜浠庣涓夌増浠ュ悗錛屽畠鐨勫唴閮ㄦ灦鏋勪綔浜嗛噸澶ф敼鍙橈紝寰堝
鍏跺畠鎰忓浘鐨勬嫻嬪姞浜嗚繘鏉ワ紝鐜板湪Checkstyle鍙互媯鏌ュ儚綾昏璁$殑闂錛?
閲嶅浠g爜錛屽閿佺殑鍙岄噸媯鏌ョ殑bug妯″紡銆?
3)CheckStyle鐨勪富瑕佹祦紼嬫槸錛?
1)瀵笿ava鏂囦歡榪涜璇嶆硶璇硶鍒嗘瀽錛岀敓鎴愯娉曟爲銆?
2)杞藉叆閰嶇疆鏂囦歡錛坈heckstyle-metadata.xml浠ュ強鑷畾涔夌殑閰嶇疆鏂囦歡錛?
register check浜嬩歡銆?
3)鎸夌収娣卞害浼樺厛閬嶅巻瀵硅娉曟爲榪涜瑙f瀽錛屾寜鐓ф敞鍐岀殑浜嬩歡錛屽湪鍒拌揪鏌愪簺鑺傜偣
( AST ) 鏃惰繘琛宻tyle媯鏌ワ紙AST錛孉 child-Sibling Tree錛屾槸璇硶
鏍戜腑鐨勬煇涓妭鐐癸紝鍏剁被鍨嬪湪TokenTypes綾諱腑瀹氫箟銆傦級
4)鎴戜滑鎵璇寸殑鑷畾涔塖tyle鐨勬鏌ワ紝灝辨槸鍦ㄧ浜屾璁懼畾鐨勩?
榪欓噷鐗墊秹鍒頒竴涓彨com.puppycrawl.tools.checkstyle.api.Check 鐨勭被錛?
鎴戜滑閫氬父闇瑕侀噸杞藉叾涓殑涓や釜鍑芥暟錛?public int[] getDefaultTokens()
鍜?em>public void visitToken(DetailAST ast). 榪欎袱涓嚱鏁扮殑鍚箟涓猴紝
鍦ㄩ亶鍘嗚娉曟爲鐨勮繃紼嬩腑錛屾瘡褰撳埌杈?em>getDefaultTokens鍑芥暟鎵榪斿洖鐨凙ST綾誨瀷錛?
紼嬪簭灝辮繘鍏?em>visitToken榪涜鍏蜂綋鐨勬鏌ュ拰鍒嗘瀽錛屽嵆錛岀湡姝g殑鍒嗘瀽媯鏌ヨ繃紼嬫槸鍦?
visitToken涓疄鐜扮殑銆?
1)瀹氫箟錛?Hammurapi瀹冩槸涓涓紑婧愮殑浠g爜瀹℃煡/璇勫(review)宸ュ叿銆傚畠鍙互甯姪鏀硅繘
Java浠g爜鐨勮川閲忋傚畠鍙互鍩轟簬涓濂楄璁¤鑼冩潵鍒嗘瀽浠g爜搴撱傚綋瀹冪鍒拌繚鍙嶈
鑼冪殑鍦版柟錛屼細鍦ㄦ姤鍛婁腑鏍囪瘑銆傚氨鍍廋heckstyle涓鏍鳳紝瀹冧笌Ant鏃犵紳闆嗘垚騫朵笖
鐢卞熀浜嶺ML閰嶇疆鏂囦歡鏉ラ┍鍔ㄣ?
2)鐗圭偣錛?
1)Hammurapi鏄敤鏉ュ己鍒朵唬鐮佽璁¤鑼冪殑銆?
2)Hammurapi鏄竴涓伒寰璁$殑宸ュ叿錛屾彁渚涗簡鑷姩鑰屼笖涓鑷寸殑鏂瑰紡鏉ュ疄鐜拌璁¤鑼冿紝
鍥犳浣夸唬鐮佽瘎瀹℃洿鍔犳湁鏁堣岃交鏉俱?
3)Hammurapi濡備綍宸ヤ綔錛?
Hammurapi榪欐牱鐨勪唬鐮佸垎鏋愬伐鍏烽兘甯︽湁璇█鍒嗘瀽鍣ㄣ傝璦鍒嗘瀽鍣ㄦ槸涓縐嶈緭鍏?
璇█浠g爜騫惰緭鍑烘娊璞¤娉曟爲鐨勫伐鍏楓傝繖涓爲涓婄殑鑺傜偣浠h〃璇█鏍囪瘑銆備緥濡傦紝鑰?
铏戜竴涓嬬畝鍗曠殑綆楁湳琛ㄨ揪寮忥細3+4. 璇█鍒嗘瀽鍣ㄤ細瑙f瀽浠栨垚涓轟竴涓鍥?鎵紺虹殑璇?
娉曟爲銆傚湪榪欎釜鏍戜腑錛岃妭鐐?浠h〃鎿嶄綔絎︽爣璇嗐傝妭鐐?鍜?鏄搷浣滄暟鏍囪瘑Hammurapi
浣跨敤ANTLR錛堝彟涓涓璦璇嗗埆宸ュ叿錛変綔涓鴻璦鍒嗘瀽鍣ㄣ傜劧鑰孉NTLR API鏄浉褰撳簳灞傜殑銆?
涓烘敼鍠勫彲鐢ㄦэ紝Hammurapi浣跨敤鍙︿竴涓狝PI錛屽熀浜嶢NTLR 鐨凧SEL錛圝ava婧愮▼搴?
宸ョ▼綾誨簱錛夛紝鏉ヨ闂娊璞¤娉曟爲銆?涓鏃︽爲鏋勫緩瀹屾垚錛屼竴縐嶆爲閬嶅巻綆楁硶灝辮鐢ㄦ潵璁?
闂爲涓瘡涓涓妭鐐廣傛瘡嬈¤闂埌涓涓妭鐐癸紝涓縐嶅洖璋冩満鍒訛紙Visitor妯″紡錛夎鐢ㄦ潵
鎻愮ず鐩稿簲鐨勬鏌ュ櫒銆傚湪榪欎簺鍥炶皟鏂規硶涓紝媯鏌ュ櫒鏀墮泦鐩稿叧鐨勪俊鎭潵紜畾鏄惁鏈夎繚鍙?
瑙勮寖鐨勫湴鏂瑰瓨鍦ㄣ傘銆
1)瀹氫箟:Lint4J鏄竴涓拡瀵笿ava鐨勬簮浠g爜鍒嗘瀽宸ュ叿錛屽畠鍙互瀵笿ava婧愮爜鍜屽瓧鑺?
鐮佽繘琛岄潤鎬佸垎鏋愶紝鍒ゆ柇鍏朵腑鏄惁瀛樺湪姝婚攣銆佹ц兘闂鎴栬呬幾緙╂ч棶棰樸?
瀹冨彲浠ラ泦鎴愬埌浠諱綍IDE縐嶆垨鏋勫緩緋葷粺
2)鐗圭偣錛?
1)媯嫻嬩唬鐮佽娉曡鍒?
2)娼滃湪鐨刡ug
3)媯嫻嬬紪鐮佹ā寮忓浠g爜鍙鎬у強澶у皬鐨勫獎鍝?
4)媯嫻嬫槸鍚﹁繚鍙岴JB瑙勮寖
1)瀹氫箟錛氫唬鐮佽川閲忕鐞嗗伐鍏稴onar鎻愪緵浜嗚璁′笌鏋舵瀯搴﹂噺銆係onar 2.0寮曞叆浜?
閽堝Java搴旂敤鐨勮璁″垎鏋愩佹灦鏋勪笌闈㈠悜瀵硅薄鐨勫害閲忥紝Sonar 2.1鍙互
媯嫻嬪埌鏈嬌鐢ㄧ殑鏂規硶浠ュ強瀵逛笉寤鴻浣跨敤鏂規硶鐨勮皟鐢ㄣ傛槸涓涓泦鎴愪簡
CheckStyle,PMD,Findbugs鐨勪唬鐮佹牎楠岃鍒?,閲嶅浠g爜鍙戠幇錛?
浠g爜嫻嬭瘯瑕嗙洊鐜囷紝 浠g爜娉ㄩ噴鐜囷紝鍙婃墍鏈夌殑媯嫻嬬巼鍙樺寲榪借釜鐨勫畬緹?
浠g爜璐ㄩ噺媯鏌ュ伐鍏楓傚畠鍖呭惈浜嗕唬鐮佽川閲忔嫻嬬殑涓冧釜鏂歸潰錛屽涓嬪浘
2)鐗圭偣錛?
1)浠g爜瑕嗙洊錛氶氳繃鍗曞厓嫻嬭瘯錛屽皢浼氭樉紺哄摢琛屼唬鐮佽閫変腑銆?
2)鏀瑰杽緙栫爜瑙勫垯銆?
3)鎼滃緙栫爜瑙勫垯錛氭寜鐓у悕瀛楋紝鎻掍歡錛屾縺媧葷駭鍒拰綾誨埆榪涜鏌ヨ銆?
4)欏圭洰鎼滃錛氭寜鐓ч」鐩殑鍚嶅瓧榪涜鏌ヨ銆?
5)瀵規瘮鏁版嵁錛氭瘮杈冨悓涓寮犺〃涓殑浠諱綍嫻嬮噺鐨勮秼鍔褲?
6)鍗曞厓嫻嬭瘯
3)Sonar2.1錛?
Sonar榪樺熀浜嶴quid寮曞叆浜嗕竴涓叏鏂扮殑瑙勫垯寮曟搸銆丼onar瑙f瀽鍣ㄦ棦鍙互澶?
鐞嗘簮浠g爜錛屼篃鍙互澶勭悊瀛楄妭鐮侊紝瑙f瀽鍣ㄥ甫鏈夊唴寤虹殑瑙勫垯錛屽彲浠ユ嫻嬫湭浣跨敤
鐨勭鏈変笌淇濇姢鏂規硶浠ュ強瀹㈡埛绔涓嶅緩璁嬌鐢ㄧ殑鏂規硶鐨勮皟鐢ㄣ?
Squid閫氳繃鍒嗘瀽搴旂敤婧愪唬鐮併丣ava API鍜屽閮ㄧ▼搴忓簱
鐨勫瓧鑺傜爜鏉ュ喅瀹氬摢浜涙柟娉曘佺被鍜屽睘鎬ф槸涓嶅緩璁嬌鐢ㄧ殑銆?
Sonar 2.1鐨?a title="鏂扮壒鎬? >鏂扮壒鎬?/a>錛?
1)涓涓叏鏂扮殑“Libraries”欏甸潰錛屾樉紺轟簡欏圭洰涓墍鏈夌殑紼嬪簭搴撳拰渚濊禆錛岃鐗規ц姹備嬌鐢?
Maven鏉ユ瀯寤洪」鐩?
涓鏃﹀湪Sonar绔欑偣鐨勪富欏典笂閫夋嫨浜嗕竴涓」鐩紝璇ユ湇鍔″氨浼氫互
鍙鍖栫殑鏍戝艦緇撴瀯灞曠ず鍑洪」鐩緷璧栥傛澶栵紝榪樻湁涓涓彲閫夌殑
鍔ㄦ佽繃婊ゅ櫒錛屽彲浠ユ牴鎹悕縐拌繃婊ょ▼搴忓簱浠ヤ究鍦ㄥ簲鐢ㄧ殑渚濊禆闂村鑸?
2)鐢ㄤ簬鎼滅儲紼嬪簭搴撲嬌鐢ㄦ儏鍐電殑“Dependencies”欏甸潰銆傛瘮濡傝錛屽彲浠?
鎼滅儲鍒頒嬌鐢ㄤ簡絎笁鏂規鏋跺Commons Logging 1.1鐨勬墍鏈夐」鐩?
3)鍙互浣跨敤鍚勭鎻掍歡鎵╁睍Sonar鐨勫姛鑳姐傜幇鍦ㄦ湁涓涓叏鏂扮殑
“System Info”欏甸潰鏄劇ず浜嗙郴緇熷睘鎬с佸凡瑁呮彃浠跺拰Java铏氭嫙鏈哄唴瀛?
緇熻淇℃伅銆傝欏甸潰榪樼粰鍑轟簡鍏充簬Sonar閰嶇疆鍜屾暟鎹簱緇熻鐨勮緇嗕俊鎭?
4)涓涓敤浜庣鐞嗗凡瑁呮彃浠跺拰緋葷粺淇℃伅鐨勭鐞嗘帶鍒跺彴銆?
鏈鏂扮増鐨凷onar涓鴻繖浜涙彃浠跺紩鍏ヤ簡涓涓祴璇曟鏋跺拰涓涓鎴峰寲鐨凪aven
鐢熷懡鍛ㄦ湡綆$悊宸ュ叿銆傚畠榪樺甫鏈変竴涓敤浜庨泦鎴愰」鐩簨浠剁殑
Web Service騫跺湪欏圭洰鐨剆ize widget涓鍔犱簡涓涓柊鐨勫害閲忔ā鍧椼?
1)JDepend涓涓紑鏀炬簮浠g爜鐨勫彲浠ョ敤鏉ヨ瘎浠稪ava紼嬪簭璐ㄩ噺鐨勪紭縐宸ュ叿錛?
瀹冮亶鍘咼ava class鐨勬枃浠剁洰褰曪紝浠ava鍖咃紙package錛変負
鍗曚綅錛屼負姣忎竴涓寘/綾昏嚜鍔ㄧ敓鎴?鍖呯殑渚濊禆紼嬪害錛岀ǔ瀹氭э紝鍙潬搴︾瓑
鐨勮瘎浠鋒姤鍛婏紝鏍規嵁榪欎簺鎶ュ憡錛屾垜浠彲浠ュ緱鍒板寘鎴栫被涔嬮棿鐨勪緷璧栧叧
緋伙紝騫跺垎鏋愬嚭鍖呯殑紼沖畾紼嬪害錛屾娊璞$▼搴︼紝鏄惁瀛樺湪寰幆渚濊愬叧緋葷瓑 銆?
鍙互鏍規嵁JDepend緇欏嚭鐨勬姤鍛婃暟鎹紝鍒嗘瀽鍑烘垜浠殑鍖呮槸鍚︽槸
鍙潬鐨勶紝紼沖畾鐨勶紝鍋ュ.鐨勫寘錛屾槸鍚︾鍚堥潰鍚戝璞$殑璁捐鍘熷垯銆?
2)鐗圭偣錛?
1)璇勪環璁捐璐ㄩ噺
2)緲昏漿渚濊禆鎬?
3)鏀寔騫惰寮鍙戝拰鏋侀檺緙栫▼
4)鐙珛鐨勫彂甯冩ā鍧?
5)璇嗗埆package鐨勫驚鐜緷璧?
3錛塂epend鐢熸垚鐨凧ava鍖呯殑璐ㄩ噺璇勪環鎶ュ憡涓昏鍖呮嫭錛?nbsp;
1)Number of Classes and Interfaces錛氬疄鐜扮被涓庢娊璞℃帴鍙g殑鏁扮洰
2)Abstractness (A)錛氬寘鐨勬娊璞″害銆傛寚涓涓寘鍐呭寘鍚殑鎶借薄綾繪垨鎺ュ彛
鍗犳暣涓寘涓殑綾葷殑姣旈噸銆?
3)Afferent Couplings (Ca)錛氬悜蹇冭﹀悎銆備緷璧栬鍖咃紙鍖呭惈鐨勭被錛夌殑澶?
閮ㄥ寘錛堢被錛夌殑鏁扮洰錛坕.e. incoming dependencies錛夛紝璇ユ暟鍊艱秺澶э紝
璇存槑璇ュ寘鐨勬媴褰撶殑鑱岃矗瓚婂ぇ錛屼篃灝辮秺紼沖畾銆?
4)Efferent Couplings (Ce)錛氱蹇冭﹀悎銆傝璇ュ寘渚濊禆鐨勫閮ㄥ寘鐨勬暟鐩?
錛坕.e. outgoing dependencies錛夛紝璇ユ暟鍊艱秺澶э紝 璇存槑璇ュ寘瓚婁笉鐙?
绔嬶紙鍥犱負渚濊禆浜嗗埆鐨勫寘錛夛紝涔熻秺涓嶇ǔ瀹氥?
5)Instability (I)錛氳 閲忎竴涓寘鐨勪笉紼沖畾紼嬪害銆侷=Ce/(Ce+Ca)銆傚畠鐨勫煎浜?
[0錛?]涔嬮棿銆侷=0鏃惰鏄庡寘鏄渶紼沖畾鐨勶紝鍙嶄箣I=1鍒欒鏄庡寘鏋佷笉紼沖畾銆?
6)Distance from the Main Sequence (D)錛?璇ユ寚鏍囦富瑕佺敤鏉ヨ瘎浠峰寘鐨勬娊璞?
紼嬪害涓庣ǔ瀹氱▼搴︾殑騫寵 鍏崇郴錛屽畠鍙互鐢ㄤ簩緇寸洿綰垮浘 A + I = 1 鏉ヨ〃紺恒?
7)Package Dependency Cycles錛氬寘鐨勫驚鐜緷璧栧害銆?
8. IBM Checking Tool for Bugs Errors and Mistakes(綆縐癇EAM)
1) 瀹氫箟錛氭槸 IBM 寮鍙戠殑涓涓潤鎬佸垎鏋愬伐鍏鳳紝鍙互鐢ㄤ簬鍒嗘瀽騫舵煡鎵懼嚭 C, C++ 鍜?Java
浠g爜涓殑涓浜涗笉瀹規槗鍙戠幇鐨勬綔鍦ㄩ敊璇紝浠庤岃揪鍒版彁楂樹唬鐮佽川閲忕殑鐩殑銆傚悓鍔ㄦ?
鍒嗘瀽宸ュ叿鍜屽叾瀹冮潤鎬佸垎鏋愬伐鍏風浉姣旓紝瀹冩嫢鏈変竴浜涘彲璐電殑鐗規с?
2)鐗圭偣錛?
1)瀵逛唬鐮佽繘琛岃娉曟壂鎻忥紝閫氳繃綆楁硶瀵逛唬鐮佽繘琛屾鏌ュ垎鏋?
2)鍜屼竴浜?bug 妯″紡榪涜姣旇緝錛屾渶緇堟爣鏄庨棶棰樺尯鍩燂紝杈撳嚭鍒嗘瀽緇撴灉
3)浣跨敤浜嗛澶栫殑瀹氱悊璇佹槑錛坱heorem proving錛夋妧鏈潵鍒ゆ柇涓涓綔鍦ㄧ殑閿欒鏄惁
鏄湡姝g殑閿欒錛屼粠鑰屽噺杞諱簡紼嬪簭鍛樺垽鏂敊璇湡浼墍闇鐨勫伐浣滈噺
9. LDRA Testbed
1)瀹氫箟錛歀DRA Testbed涓哄簲鐢ㄨ蔣浠剁殑紜鍜岄獙璇佹彁渚涘己澶х殑婧愪唬鐮佹祴璇曞拰鍒嗘瀽鍔熻兘錛?
鏄嫭鐗圭殑璐ㄩ噺鎺у埗宸ュ叿銆?瀹冩湁鍔╀簬鎻愰珮璁$畻鏈鴻蔣浠跺繀闇鐨勫彲闈犳э紝鍋ュ.鎬у拰灝?
鍙兘鐨勯浂緙洪櫡錛屽畠鐨勪嬌鐢ㄥ甫鏉ユ椂闂淬佹垚鏈拰鏁堢巼涓婄湡瀹炵殑鑺傜渷錛岃繖浜涢兘鏄棤娉曡
閲忓叾浠峰肩殑銆傚畠鏄己澶у拰瀹屾暣鐨勯泦鎴愬伐鍏峰寘錛屼嬌鍏堣繘鐨勮蔣浠跺垎鏋愭妧鏈簲鐢ㄥ湪寮鍙戠敓
鍛藉懆鏈熺殑鍏抽敭闃舵銆?
2)LDRA Testbed鎻愪緵寮哄ぇ鐨勫垎鏋愬姛鑳斤紝鐢ㄤ簬涓や釜涓昏鐨勬祴璇曢鍩燂紝闈欐佸垎鏋愬拰鍔ㄦ佸垎鏋愩?
1錛夐潤鎬佸垎鏋愶細 鍒嗘瀽浠g爜錛屽茍涓旀彁渚涘浠g爜緇撴瀯鐨勭悊瑙c?
2錛夊姩鎬佸垎鏋愶細 鍒╃敤婧愪唬鐮佺殑鎻掕鐗堟湰錛屼嬌鐢ㄦ祴璇曟暟鎹墽琛岋紝鍦ㄨ繍琛屾椂鍙戠幇杞歡
緙洪櫡
3) 浣跨敤LDRA testbed 鐨勫ソ澶?
杞歡寮鍙戝拰嫻嬭瘯榪囩▼鐨勬垚鏈晥鐜囧垎鏋愬伐鍏?
鍗曞厓銆侀泦鎴愬拰緋葷粺嫻嬭瘯鐨勭悊鎯沖伐鍏?nbsp;
璐┛浜庤蔣浠跺紑鍙戠殑鏁翠釜鐢熷懡鍛ㄦ湡
LDRA Testbed搴旂敤浜庤澶氫笉鍚岀殑棰嗗煙
榪囩▼鏀硅繘
杞歡嫻嬭瘯
杞歡緇存姢
LDRA Testbed鐨勪紭鐐癸細
鏀硅繘杞歡璐ㄩ噺
瀹氫綅杞歡緙洪櫡
寮哄埗鎵ц宸ヤ笟鏍囧噯
鍑忓皯緇存姢璐圭敤40錛呬互涓?
鍑忓皯寮鍙戝拰嫻嬭瘯鎴愭湰75錛呬互涓?
閫氳繃鑷姩鍖栬繃紼嬫彁楂樺憳宸ュ姩鍔?
10. Yasca
1) 瀹氫箟錛歽asca鏄竴涓紑婧愰潤鎬佷唬鐮佸垎鏋愬伐鍏鋒彃浠舵鏋?銆闆嗘垚嫻佽鐨勫璇█闈欐佸垎鏋愬伐
鍏峰findbugs/pmd/jlint/rats/cppcheck,鐢變簬鎻掍歡鏈韓澶氭牱鏁呭彲鏀寔java
c++絳夎璦闈欐佸垎鏋?Yasca鏄竴涓敤鏉ュ鎵懼畨鍏ㄦ紡媧烇紝鍦ㄧ▼搴忕殑婧愪唬鐮佷腑媯嫻嬩唬
鐮佽川閲忋佹ц兘浠ュ強涓鑷存х殑杞歡銆傚畠闆嗘垚浜嗗叾浠栧紑婧愰」鐩紝鍏朵腑鍖呮嫭FindBugs
PMD 錛孞Lint 錛?Cppcheck 錛屽茍鎵弿鏌愪簺鏂囦歡綾誨瀷錛屼互鍙婅嚜瀹氫箟鎵弿涔﹂潰鐨?
Yasca 榪欐槸涓涓懡浠よ宸ュ叿錛屼笌鎶ュ憡涓敓鎴愮殑HTML 錛?CSV鏍煎紡錛?XML鐨勶紝鐨?
SQLite 錛屽拰鍏朵粬鏍煎紡銆?
]]>
]]>
銆銆http://jakarta.apache.org/poi/
銆銆http://www.onjava.com/pub/a/onjava/2003/01/22/poi.html
銆銆http://www.csdn.net/develop/article/15/15311.shtm
銆銆http://forum.java.sun.com/thread.jsp?forum=40&thread=382666&tstart=0&trange=15
]]>
http://struts.apache.org/primer.html
]]>
Sun 鍏徃鎻愪緵鐨凧ava API Docs鏄涔犲拰浣跨敤Java璇█涓渶緇忓父浣跨敤鐨勫弬鑰冭祫鏂欎箣涓銆備絾鏄暱鏈熶互鏉ユ鏂囨。鍙湁鑻辨枃鐗堬紝瀵逛簬涓浗鍦板尯鐨凧ava寮鍙戣呮潵璇寸浉褰撶殑涓嶄究銆傜洰鍓峉un 鍏徃姝e湪緇勭粐澶氭柟鍔涢噺灝嗘鏂囨。緲昏瘧鎴愪腑鏂囷紝騫朵簬2005騫?0鏈?1鏃ュ湪Sun 涓浗鎶鏈ぞ鍖猴紙http://gceclub.sun.com.cn/錛夋寮忓彂甯冪涓鎵逛腑鏂囩増Java API鏂囨。錛堝寘鎷琷ava.lang鍜宩ava.util綾誨簱API 鏂囨。鐨勪腑鏂囩増錛夈傜粡榪囧皢榪?0涓湀鐨勫姫鍔涳紝鐩墠鎴戜滑宸茬粡灝咼ava SE 5.0鐨勫叏閮ˋPI鏂囨。涓枃鍖栥傚紑鍙戜漢鍛樺彲浠ラ氳繃Sun 涓浗鎶鏈ぞ鍖虹殑緗戠珯鍦ㄧ嚎嫻忚鐩稿叧鏂囨。錛屼篃鍙互灝嗗叏閮ㄦ枃妗d笅杞藉埌鏈湴浠ユ柟渚挎绱㈠拰浣跨敤銆?
J2SE DK & API涓嬭澆
-------------------------
http://java.sun.com/j2se/1.3/download.html
http://java.sun.com/j2se/1.4.2/download.html
http://java.sun.com/javase/downloads/index_jdk5.jsp
http://java.sun.com/javase/downloads/index.jsp
J2EE DK & API涓嬭澆
-------------------------
http://java.sun.com/j2ee/1.3/index.jsp
http://java.sun.com/j2ee/1.3/download.html
http://java.sun.com/j2ee/1.4/index.jsp
http://java.sun.com/j2ee/1.4/download.html
http://java.sun.com/javaee/downloads/index.jsp
JDK1.6API涓枃鐗堬紙鍏級
-------------------------
* HTML 鏍煎紡(鍦ㄧ嚎鑻辨枃) http://java.sun.com/javase/6/docs/
* HTML 鏍煎紡(鍦ㄧ嚎涓枃) http://download.java.net/jdk/jdk-api-localizations/jdk-api-zh-cn/publish/1.6.0/html/zh_CN/api/index.html
* zip 鏍煎紡(涓枃) http://download.java.net/jdk/jdk-api-localizations/jdk-api-zh-cn/publish/1.6.0/html_zh_CN.zip
* CHM 鏍煎紡(涓枃) http://download.java.net/jdk/jdk-api-localizations/jdk-api-zh-cn/publish/1.6.0/chm/JDK_API_1_6_zh_CN.CHM
JDK1.5API涓枃鐗堬紙鍏級
-------------------------
* HTML 鏍煎紡(鍦ㄧ嚎鑻辨枃) http://java.sun.com/javase/5/docs/
* HTML 鏍煎紡(鍦ㄧ嚎涓枃) http://gceclub.sun.com.cn/Java_Docs/html/zh_CN/api/index.html
* zip 鏍煎紡(涓枃) http://gceclub.sun.com.cn/Java_Docs/html_zh_CN.zip
* CHM 鏍煎紡(涓枃) http://download.java.net/jdk/jdk-api-localizations/jdk-api-zh-cn/builds/JDK_API_1_5_zh_CN.CHM
鐩稿叧緗戠珯
-------------------------
http://java.sun.com
http://gceclub.sun.com.cn/
http://developers.sun.com/downloads/
http://java.sun.com/javaee/downloads/
http://java.sun.com/javase/downloads/
http://www.netbeans.info/downloads/
鏈枃鏉ヨ嚜CSDN鍗氬錛岃漿杞借鏍囨槑鍑哄錛歨ttp://blog.csdn.net/zhsp1029/archive/2008/04/05/2253865.aspx
GET
and POST
HTTP requests. Depending on the context, a controller may also select a new view -- for example, a web page of results -- to present back to the user. 5 MVC design
http://javadude.com/articles/index.html
Using Jpcap, you can develop applications to capture packets from a network interface and visualize/analyze them in Java. You can also develop Java applications to send arbitrary packets through a network interface.
jpcap home page錛?br />
http://netresearch.ics.uci.edu/kfujii/jpcap/doc/samples.html