±à¼ÍƼö: |
±¾ÎÄÖ÷Òª½éÉÜÁËΪʲôҪ×ö´úÂëÖÊÁ¿·ÖÎö¡¢³£¼ûµÄ´úÂëÖÊÁ¿·ÖÎö¹¤¾ß¡¢DevOpsƽ̨ÖеĴúÂëÖÊÁ¿·ÖÎö¼°DevOpsƽ̨ÖÐÈçºÎΪ´úÂëÖÊÁ¿Ìṩ±£ÕÏ¡£
±¾ÎÄÀ´×ÔÓÚ΢ÐŹ«Õ˺ÅEAWorld£¬ÓÉ»ðÁú¹ûÈí¼þLinda±à¼¡¢ÍƼö¡£ |
|
Ò»¡¢ÎªÊ²Ã´Òª×ö´úÂëÖÊÁ¿·ÖÎö
ÔÚÈí¼þ¿ª·¢¹ý³ÌÖУ¬µ±Ò»¸ö¹¦ÄÜ¿ª·¢Íê³Éºó£¬ÈçºÎÈ¥±£Ö¤´úÂëÊÇ¿ÉÓõġ¢Ã»ÎÊÌâµÄ£¿Ò»°ãÇé¿öÏ£¬»ù±¾¶¼»áÓе¥Ôª²âÊÔ¡¢Ã¿ÈÕ¹¹½¨¡¢¹¦ÄܲâÊԵȻ·½ÚÀ´±£Ö¤¡£µ«ÊÇ£¬±£Ö¤´úÂë¿ÉÓþ͹»ÁËÂð£¿ÏÔÈ»²»ÊÇ¡£

Ò»¸öÈí¼þÏîÄ¿¿ª·¢ÍêÒ»¸ö°æ±¾»áÓÐÏÂÒ»¸ö°æ±¾£¬»áÓÐеÄÐèÇó£¬ÔÀ´µÄ¹¦ÄÜÒ²¿ÉÄÜ»á±ä¸ü¡£ÄãдµÄ´úÂë¿ÉÄܻᱻ±ðÈËʹÓã¬ÄãÒ²¿ÉÄÜÐèÒªÐ޸ıðÈËдµÄ´úÂë¡£Èç¹ûÖ»¿¼ÂÇ´úÂëµÄ¿ÉÓÃÐÔ£¬²»¿¼ÂÇ´úÂëÖÊÁ¿£¬ÄÇôºóÆÚÓöµ½µÄÎÊÌâÆäά»¤³É±¾½«»áºÜ¸ß£¬²»ÀûÓÚ°æ±¾µü´ú¡£ÎªÁ˱ÜÃâ»ò¼õÉÙά»¤ºÍµü´ú³É±¾£¬ÖØÊÓ´úÂëÖÊÁ¿£¬×öºÃ´úÂëÖÊÁ¿·ÖÎöºÍ¹Ü¿ØÊÇ×îºÃµÄ·½Ê½¡£
¶þ¡¢³£¼ûµÄ´úÂëÖÊÁ¿·ÖÎö¹¤¾ß
¼ÈȻҪ×ö´úÂëÖÊÁ¿·ÖÎö£¬ÄÇÎÒÃÇÏÈ¿´¿´³£ÓõĴúÂë·ÖÎö¹¤¾ß¡£
PMD£º ×¢ÖØ¼ì²éÔ´ÎļþÖеÄDZÔÚÎÊÌ⣬¿ÉÒÔ¼ì²éJava´úÂëÖÐÊÇ·ñÓÐδʹÓõıäÁ¿¡¢Ë½Óз½·¨£¬ÊÇ·ñÓпյÄtry/catch¡¢ÊÇ·ñ¹ýÓÚ¸´Ôӵıí´ïʽµÈµÈ¡£
CheckStyle£º×¢ÖØ´úÂë¸ñʽ¡¢´úÂë¹æ·¶£¬Í¨¹ý¼ì²é±àÂë¸ñʽ¡¢ÃüÃûÔ¼¶¨¡¢Javadoc¡¢ÀàÉè¼ÆµÈ·½Ãæ½øÐдúÂë¹æ·¶ºÍ·ç¸ñµÄ¼ì²é£¬´Ó¶øÓÐÐ§Ô¼Êø¿ª·¢ÈËÔ±¸üºÃµØ×ñÑ´úÂë±àд¹æ·¶£¬Ìṩ³£¼ûIDEµÄ²å¼þ£¬Èçeclipse£¬IDEAµÈ¡£
FindBugs£º×¢Öؼì²âDZÔÚµÄBugºÍÐÔÄÜÎÊÌ⣬ͨ¹ý¼ì²éÀàÎļþ»òjarÎļþ½«×Ö½ÚÂëÓëÒ»×éȱÏÝģʽ½øÐжԱȴӶø·¢ÏÖ´úÂëȱÏÝ£¬ÌṩUI½çÃæºÍ³£¼ûIDE²å¼þ¡£
HP Fortify£ºÉÌÓõĴúÂ밲ȫ·ÖÎö¹¤¾ß£¬²àÖØÓÚ´úÂëÖеݲȫ©¶´¼ì²â¡£Fortifyͨ¹ýÓ밲ȫ©¶´¹æÔò¿â½øÐÐÆ¥Å䣬½«Ô´ÂëÖеݲȫ©¶´É¨Ãè³öÀ´£¬²¢Éú³É±¨¸æºÍÐÞ¸´Òâ¼û¡£
SonarQube£º¿ªÔ´µÄ´úÂëÖÊÁ¿¹ÜÀíÆ½Ì¨£¬º¸ÇÁ˼ܹ¹Éè¼Æ¡¢×¢ÊÍ¡¢±àÂë¹æ·¶¡¢Ç±ÔÚȱÏÝ¡¢´úÂ븴ÔÓ¶È¡¢µ¥Ôª²âÊÔ¡¢Öظ´´úÂë7¸öά¶È¡£Í¨¹ýÇ¿´óµÄ²å¼þÀ©Õ¹»úÖÆ£¬Ö§³Ö¶ÔÖ÷Á÷±à³ÌÓïÑÔµÄÖ¸±ê·ÖÎö£¬Ä¿Ç°¿ÉÒÔÖ§³Ö³¬¹ý20ÖÖÒÔÉÏÖ÷Á÷±à³ÌÓïÑÔ¡£
Èý¡¢DevOpsƽ̨ÖеĴúÂëÖÊÁ¿·ÖÎö
ÔÚDevOpsƽ̨ÖÐÎÒÃÇÊÇÈçºÎ×ö´úÂë·ÖÎöµÄÄØ£¿ÎÒÃǵÄÑ¡ÔñÊÇSonarQube¡£
SonarQubeÖ÷ÒªÓÐÒ»ÏÂÌØµã£º
Ö§³Ö¶àÖÖÓïÑÔ£º20ÖÖÒÔÉÏÖ÷Á÷±à³ÌÓïÑÔ
×Ô¶¯»¯·ÖÎö£ºÍ¨¹ýÓë³ÖÐø¼¯³Éƽ̨½øÐм¯³É¿ÉÒÔʵÏÖ×Ô¶¯»¯ÖÊÁ¿·ÖÎö
ÌύǰԤ¼ì²é£ºIDE²å¼þSonarLint¿ÉÒÔÈÿª·¢ÕßÔÚÌá½»´úÂëǰ½øÐÐ×Ô¼ì²é
À©Õ¹ÐÔÇ¿£º²å¼þÀ©Õ¹»úÖÆÇ¿´ó£¬ÒÑÓÐ60+²å¼þ£¬»¹¿ÉÒÔ¿ª·¢×Ô¼ºµÄ²å¼þ
ÎÊÌâ¹ØÁªµ½Ô´Â룺ËùÓÐÎÊÌâ¶¼¹ØÁªµ½¾ßÌåµÄ´úÂëÐУ¬±È½ÏÖ±¹Û
Ò×ÓÚ¼¯³É£ºÍ¨¹ý²å¼þÖ§³Ö¶àÖÖÈí¼þÉúÃüÖÜÆÚ¹ÜÀíÆ½Ì¨
ÏÂÃæÎÒÃÇÏêϸÁ˽âÒ»ÏÂSonarQube¡£¿´¿´SonarQubeµÄÓÐÄÄЩ×é¼þ¡£

¿ÉÒÔ¿´µ½SonarQubeÖ÷ÒªÓÐÕ⼸²¿·Ö×é³É£º
SonarQube Server
a) Web·þÎñ£º¹©¿ª·¢Õß¡¢¹ÜÀíÈËÔ±ä¯ÀÀÖÊÁ¿Ö¸±êºÍSonarQubeµÄÅäÖã»
b) ËÑË÷·þÎñ£ºÌá¹©Ò³ÃæËÑË÷¹¦ÄÜ£»
c) ¼ÆËãÒýÇæ£º´¦ÀíÉú³ÉµÄ·ÖÎö±¨¸æ£¬²¢½«Êý¾Ý±£´æµ½Êý¾Ý¿â£»
SonarQube Database
a) ´æ´¢SonarQubeµÄËùÓÐÅäÖã¨Ö¸±ê¡¢Óû§ÅäÖᢲå¼þÅäÖõȣ©£»
b) ´æ´¢±»·ÖÎöÏîÄ¿µÄÖÊÁ¿±¨¸æ£¬¸÷ÖÖÊÓͼÊý¾Ý£»
SonarQube Plugins
a) Ö§³Ö¸÷ÖÖ²å¼þ£¬°üÀ¨¿ª·¢ÓïÑÔ£¬SCM£¬³ÖÐø¼¯³É£¬°²È«ÈÏÖ¤µÈµÈ£»
SonarQube Scanner
a) ÔËÐÐÔÚ¹¹½¨»·¾³»ò³ÖÐø¼¯³É»·¾³ÖÐÓÃÓÚ·ÖÎöÏîÄ¿µÄÒ»¸ö»ò¶à¸ö·ÖÎöÆ÷£»
SonarQubeµÄ¸÷¸ö×é¼þÊÇÈçºÎ¹¤×÷µÄÄØ£¿

¿ÉÒÔ¿´µ½SonarQube¸÷×é¼þµÄ¹¤×÷Á÷³Ì£º
a) ¿ª·¢ÕßÔÚIDEÖбàÂ룬²¢Ê¹ÓÃSonarLintÖ´Ðб¾µØ´úÂë·ÖÎö£»
b) ¿ª·¢ÕßÏòÈí¼þÅäÖùÜÀíÆ½Ì¨£¨Git£¬SVN£¬TFVCµÈ£©Ìá½»´úÂ룻
c) ´úÂëÌá½»´¥·¢³ÖÐø¼¯³Éƽ̨×Ô¶¯¹¹½¨¡¢Ê¹ÓÃSonarQube ScannerÖ´ÐзÖÎö£»
d) ·ÖÎö±¨¸æ±»·¢Ë͵½SonarQube Server½øÐд¦Àí£»
e) ´¦ÀíºÃµÄ±¨¸æÉú³É¶ÔÓ¦¿ÉÊÓ»¯µÄÊÓͼ£¬²¢½«Êý¾Ý±£³Öµ½Êý¾Ý¿â£»
f) ¿ª·¢Õß¿ÉÒÔÔÚÒ³ÃæÍ¨¹ý²é¿´£¬ÆÀÂÛ£¬½â¾öÎÊÌâÀ´¹ÜÀíºÍ¼õÉÙ¼¼ÊõÕ®£»
ÔÙÈÃÎÒÃÇ¿´¿´SonarQubeÖеÄÒ»Ð©ÖØÒª¸ÅÄî¡£
Ö¸±ê£ºSonarQubeÖеÄÖ÷ÒªÖ¸±êÓпɿ¿ÐÔ£¬°²È«ÐÔ£¬¿Éά»¤ÐÔ£¬²âÊÔ¸²¸ÇÂÊ£¬¸´ÔÓ¶È£¬Öظ´´úÂ룬¹æÄ££¨´óС£©£¬ÎÊÌâµÈ¡£
´úÂë¹æÔò£ºÔÚSonarQubeÖУ¬Í¨¹ý²å¼þÌṩµÄ¹æÔò£¬ÔÚÖ´ÐдúÂë·ÖÎöʱ¶Ô´úÂë½øÐзÖÎö²¢Éú³ÉÎÊÌâ¡£ÓÉÓÚ¹æÔòÖж¨ÒåÁËÐÞ¸´ÎÊÌâ»°·ÑµÄ³É±¾£¨Ê±¼ä£©£¬½â¾öÎÊÌâµÄ´ú¼ÛÒÔ¼°¼¼ÊõÕ®¿ÉÒÔͨ¹ýÕâЩÎÊÌâ½øÐмÆËã¡£¹æÔòÒ»°ãÓÐÈýÖÖÀàÐÍ£º¿É¿¿ÐÔ£¨Bug£©£¬¿Éά»¤ÐÔ£¨»µÎ¶µÀ£©£¬°²È«ÐÔ£¨Â©¶´£©¡£
ÖÊÁ¿ÅäÖãºÖÊÁ¿ÅäÖÃÌṩÁ˸ù¾ÝÐèÇóÅäÖÃÒ»×é´úÂë¹æÔòµÄÄÜÁ¦£¬Õâ×é´úÂë¹æÔò½«±»ÓÃÓÚ·ÖÎöijЩָ¶¨µÄ×é¼þ£¨ÏîÄ¿£©¡£ÀýÈ磬ÏîÄ¿A¶ÔӦʲô±à³ÌÓïÑÔ£¬ÊÊÓÃÓÚÄÇЩ´úÂë¹æÔòµÈµÈ¡£
ÖÊÁ¿ãУºÖÊÁ¿ãÐÊÇһϵÁжÔÏîĿָ±ê½øÐжÈÁ¿µÄÌõ¼þ¡£ÏîÄ¿±ØÐë´ïµ½ËùÓÐÌõ¼þ²ÅÄÜËãÕûÌåÉÏͨ¹ýÁËÖÊÁ¿ãС£ÀýÈ磬ÅäÖÃÖÊÁ¿ãÐΪÐÂÔöBugs´óÓÚ10£¬Ð´úÂë¿É¿¿ÂʵÍÓÚÆÀ¼¶A£¬Ð´úÂë¿Éά»¤ÂʵÍÓÚÆÀ¼¶B£¬ÄÇ·ÖÎöÍê³ÉºóÈôÖ¸±ê·ûºÏÕâЩ±ê×¼£¬Ôò´úÂëÖÊÁ¿½«±»ÈÏΪÊDz»ºÏ¸ñµÄ¡£
SonarQube Server´¦Àí·ÖÎö±¨¸æÊ±£¬¸ù¾ÝÖÊÁ¿ÅäÖÃÖеĴúÂë¹æÔò½øÐÐÆ¥Å䣬´Ó¶øÉú³É¾ßÌåµÄÖ¸±êÊý¾Ý£¬È»ºó¸ù¾ÝÖÊÁ¿ãÐÖеÄãÐÖµÅжϳöÏîÄ¿µÄ´úÂëÊÇ·ñºÏ¸ñ¡£
˵ÁËÄÇô¶à£¬ÔÚDevOpsƽ̨ÊÇÈçºÎ×ö´úÂë·ÖÎöµÄ£¿ÏÈÈÃÎÒÃÇ¿´¿´DevOpsƽ̨µÄºËÐÄÁ÷³Ì¡£

´ÓͼÖп´µ½£¬DevOpsƽ̨µÄºËÐÄÁ÷³ÌÖ÷ÒªÓж¨Ò壬¼Æ»®£¬¹¹½¨£¬²âÊÔ£¬²¿Êð£¬ÔËÐм¸¸ö»·½Ú¡£´úÂë·ÖÎöÊǹ¹½¨»·½ÚµÄ×é³É²¿·Ö¡£ÄÇôDevOpsƽ̨ÖÐÈçºÎ½øÐй¹½¨ÄØ£¿Õâ¾ÍÒý³öÏÂÃæÕâÕÅͼ¡£

ÔÚDevOpsƽ̨ÖУ¬Í¨¹ýÅäÖù¹½¨¶¨Ò壬½«¶à¸ö¹¹½¨ÈÎÎñ½øÐбàÅÅ£¬Í¨¹ý×Ô¶¯»òÕßÊÖ¶¯µÄ·½Ê½´¥·¢¹¹½¨¡£ÔÚ¹¹½¨ÈÎÎñÖÐÔö¼Ó¡°´úÂëÖÊÁ¿¼ì²â¡°ÈÎÎñ£¬Ö´Ðй¹½¨Ê±£¬½«¶Ô´úÂë½øÐзÖÎö¡£

ÉÏÃæ½²µ½µÄ´úÂë·ÖÎöÊÇ×÷Ϊ¹¹½¨ÈÎÎñÈ¥Ö´Ðе쬳ý´ËÖ®Í⣬´úÂë·ÖÎöÒ²¿ÉÒÔµ¥¶ÀÈ¥Ö´ÐС£ÔÚÏîÄ¿ÖйØÁª´úÂë¿âºó£¬¾Í¿ÉÒÔн¨´úÂë·ÖÎö£¬Ö±½Ó½øÐзÖÎöÁË¡£

²»¹ÜÊÇÔÚ¹¹½¨¹ý³ÌÖÐÖ´ÐдúÂë·ÖÎö¹¹½¨ÈÎÎñ£¬»¹Êǵ¥¶ÀÖ´ÐдúÂë·ÖÎö£¬¶¼Àë²»¿ª¹¹½¨ÒýÇæJenkinsµÄÖ§³Ö¡£
ÔÚ¹¹½¨»·½Ú£¬DevOpsƽ̨µÄÖ°ÔðÊÇ£ºÅäÖù¹½¨µÄ´¥·¢·½Ê½¡¢±£Áô²ßÂÔ¡¢²ÎÊý£¬¸ù¾Ý¹¹½¨¶¨ÒåÅäÖÃÉú³É¶ÔÓ¦µÄJenkins
PipelineÅäÖ㬵÷ÓÃJenkinsµÄAPI´¥·¢´´½¨ºÍÖ´ÐÐJenkins Job£¬È»ºó²éѯJenkins
JobµÄÖ´Ðнø¶ÈºÍ½á¹û£»JenkinsµÄÖ°ÔðÊÇ£ºÊµ¼ÊÈ¥´´½¨ºÍÖ´ÐÐJenkins Job£¬²¢ÌṩJobÖ´ÐÐÇé¿öµÄ²éѯAPI¹©DevOpsƽ̨µ÷Óá£
µ±´úÂë·ÖÎö¹¹½¨ÈÎÎñÖ´ÐÐÍê³Éºó£¬·ÖÎö±¨¸æ½«»á·¢Ë͵½SonarQube Server½øÐд¦Àí£¬×îÖÕÎÒÃÇ¿´µ½µÄÊÇ´úÂëµÄ¸÷ÖÖ¶ÈÁ¿Ö¸±ê¡£

ËÄ¡¢DevOpsƽ̨ÖÐÈçºÎ
Ϊ´úÂëÖÊÁ¿Ìṩ±£ÕÏ
ÉÏÃæ½éÉÜÁËDevOpsƽ̨ÈçºÎ½øÐдúÂëÖÊÁ¿·ÖÎö¡£ÄÇÏÖÔÚÈÃÎÒÃÇ¿´ÏÂÔÚDevOpsƽ̨ÖеĴúÂëÖÊÁ¿·ÖÎö½á¹û¡£
ÔÚ¹¹½¨½á¹ûÖдúÂëÖÊÁ¿·ÖÎöµÄ±¨¸æ

±¨¸æ±È½Ï¼òµ¥£¬µã»÷Á´½Ó¿ÉÒÔÖ±½ÓÔÚSonarQubeÖв鿴Ïêϸ±¨¸æ

µ¥¶ÀÖ´ÐдúÂë·ÖÎöµÄ±¨¸æ

³ý´ËÖ®Í⣬ÎÒÃÇ»¹ÄÜÔÚDevOpsƽ̨Öп´µ½Ò»Ð©±¨±í¡£
µ¥Ôª²âÊÔ¸²¸ÇÂʱ¨±í

¿Éά»¤ÐÔ±¨±í

¸ù¾Ý±¨¸æ£¬ÎÒÃÇ¿ÉÒÔ´Ó¿É¿¿ÐÔ£¬°²È«ÐÔ£¬¿Éά»¤ÐÔ£¬¸²¸ÇÂÊ£¬Öظ´´úÂ룬´úÂë¹æÄ£´óСµÈά¶È¶Ô´úÂëÖÊÁ¿ÓÐÒ»¸öÈ«ÃæµÄÁ˽⡣´úÂëÖÊÁ¿·ÖÎö±¾Éí²¢²»ÄÜÖ±½Ó¼õÉÙȱÏÝÊýÁ¿£¬µ«ÊÇ´úÂëÖÊÁ¿·ÖÎöÄÜÈÃÎÒÃÇÔÚ¹¹½¨»·½Ú¼°Ê±·¢ÏÖ²¢´¦ÀíDZÔÚȱÏݺÍ©¶´£¬ÈÃÎÒÃÇÄÜÇå³þÁ˽⵽´úÂ븴ÔÓ¶È£¬´úÂëÊÇ·ñ·ûºÏ¿ª·¢¹æ·¶£¬´Ó¶øÈÃÎÒÃÇ×ö³öÕýÈ·µÄ¾ö²ß£¬±ÜÃâ·çÏպͼõÉÙ¼¼ÊõÕ®Îñ¡£
Òò´Ë£¬´úÂë·ÖÎöÕýÊÇDevOpsƽ̨±£Ö¤´úÂëÖÊÁ¿µÄÖØÒªÊֶΡ£
|