背景
《阿里巴巴Java開發(fā)手冊(cè)》自從第一個(gè)版本起,倍受業(yè)界關(guān)注歌逢,很多人甚至希望能盡快在自己的團(tuán)隊(duì)推行起來,讓團(tuán)隊(duì)有一套共同的開發(fā)準(zhǔn)則翘狱∶匕福基于這套準(zhǔn)則,我們希望達(dá)到以下兩個(gè)要求:
1.以插件的形式集成到j(luò)ava的IDE開發(fā)環(huán)境(IDEA潦匈、Eclipse)阱高,用于開發(fā)人員的代碼自檢。
2.將該開發(fā)規(guī)范集成到sonar的規(guī)則庫茬缩,同時(shí)和gitlab-ci集成赤惊,制定閾值規(guī)則,不滿足要求凰锡,pipline執(zhí)行失敗未舟。
如何實(shí)現(xiàn)
插件導(dǎo)入IDE
阿里巴巴開發(fā)了一套自動(dòng)化的IDE檢測插件(IDEA、Eclipse)掂为, 該插件在掃描代碼后裕膀,將不符合《手冊(cè)》的代碼按Blocker/Critical/Major三個(gè)等級(jí)顯示在下方,甚至在IDEA上勇哗,還基于Inspection機(jī)制提供了實(shí)時(shí)檢測功能昼扛,編寫代碼的同時(shí)也能快速發(fā)現(xiàn)問題所在。對(duì)于歷史代碼欲诺,部分規(guī)則實(shí)現(xiàn)了批量一鍵修復(fù)的功能抄谐。
代碼已經(jīng)開源,GitHub:https://github.com/alibaba/p3c
打開IDEA扰法,選擇Preferences - Plugins - Browse repositories后蛹含,在輸入框中輸入"alibaba",可以看到返回結(jié)果中有"Alibaba Java Coding Guidelines"塞颁。
制作sonar插件
1.在github找到一個(gè)p3c的sonar插件開源項(xiàng)目浦箱,https://github.com/mrprince/sonar-p3c-pmd卧斟,導(dǎo)入工程后,修改規(guī)則名org.sonar.plugins.pmd.PmdConstants憎茂,REPOSITORY_NAME為規(guī)則名稱PMD_wwyl珍语。
插件打包:mvn clean package sonar-packaging:sonar-plugin -Dmaven.test.skip=true
2.將生成的插件放到/extensions/plugins
3.重啟sonar,需切到非root賬號(hào)竖幔,先啟動(dòng)es服務(wù)板乙, ./elasticsearch -d? 再啟動(dòng)sonar服務(wù)./sonar.sh start
4.查看sonar和es服務(wù)日志是否正常
5.sonar規(guī)則增加了p3c,完工拳氢。