sonar 與 NOSONAR
大家都知道sonar是個(gè)好東東,在有CI支持的情況下,使用好了可以非常好的控制代碼的質(zhì)量,諸如代碼覆蓋率,代碼規(guī)則檢查等。
而解決violation的辦法,除了正統(tǒng)的修改代碼來滿足規(guī)則外,還有一個(gè)變通的方法, NOSONAR。這個(gè)標(biāo)記本意是在一些特殊情況,有不得已的理由不得不違反規(guī)則,為了避免sonar繼續(xù)報(bào)錯(cuò)而不得已做了一個(gè)"變通"。
NOSONAR本意雖好,但要是有人濫用,變通就會變成取巧,因?yàn)榻鉀Qsonar violation的最簡單的方法,就是直接NOSONAR!
當(dāng)問題很簡單時(shí),一般人都會選擇正常的方式修改代碼,如果只是舉手之勞基本上還是能遵守規(guī)則的。但是當(dāng)問題復(fù)雜時(shí),或者說當(dāng)解決問題不再是舉手之勞時(shí),每個(gè)人都要受到NOSONAR的誘惑。而NOSONAR的底線在哪里?沒有人定義,沒有人檢測,自然不會每個(gè)人都堅(jiān)守,NOSONAR的底線隨著一個(gè)一個(gè)的NOSONAR慢慢的在降低。退五十步的人,是沒有資格笑百步的。
返回到現(xiàn)實(shí)代碼中,不知道是大家都沒有頂住誘惑,還是說我們開啟的規(guī)則不大合理,總之越來越頻繁的在代碼中看到NOSONAR了,雖然還沒有到泛濫的地步,但是已經(jīng)讓我有些不安了。簡單搜索了一下剛才讓我感覺到很多NOSONAR的project,結(jié)果是58個(gè)。
更糟糕的是,每個(gè)NOSONAR后面都不會帶有注釋說明為什么要NOSONAR,因此一個(gè)個(gè)飛舞的NOSONAR就變成了一個(gè)個(gè)謎團(tuán)。想知道為什么要NOSONAR嗎?恩,你猜......
我沒有辦法去檢查這個(gè)58個(gè)NOSONAR是不是都合理的,都站得住腳的。出于程序員的習(xí)慣,對于一切不可確認(rèn)性都報(bào)以懷疑的眼光和質(zhì)疑的姿態(tài),我總覺得這58個(gè)NOSONAR讓我總是沒有底,每次我看到sonar上100%的規(guī)則檢測通過率時(shí),我總是禁不住在心里浮現(xiàn)NOSONAR的字樣。
好吧,我承認(rèn),我是個(gè)心里有些陰暗的家伙......
posted on 2010-11-22 11:04 sky ao 閱讀(3921) 評論(2) 編輯 收藏 所屬分類: project manager