2009-09-16 79 views
1

最近我一直在研究checkstyle,作爲對標準編碼約定的一些研究的一部分。雖然它看起來完全適合全新的項目,但它似乎對已有項目的採用有巨大的障礙,因爲它似乎沒有提供僅檢查新的或已編輯的代碼的方法。也許我錯了?Checkstyle源代碼控制集成

如果你有一個從未有過編碼標準的代碼庫,它可能是一個巨大的努力,讓整個代碼庫同時與一個標準內聯。隨着代碼的自然發展,隨着時間的推移逐步完成它似乎是一種更合理的方法。但它似乎並不像checkstyle那樣可能。

我認爲這必須與源控制系統配合才能成爲可能。 Checkstyle可能有這種可能嗎?還有另一種可以提供這種功能的工具嗎?

+0

在我的回答中添加了一個建議以迴應您的評論 – VonC 2009-09-18 12:22:08

+0

很好的答案。謝謝你的時間。 – Fostah 2009-09-18 13:24:41

回答

1

據我所知,Checkstyle的目的是分析源,而不考慮其歷史或修訂。

要添加這種功能意味着腳本checkstyle分析將其與代表增量的文件的確切子集進行饋送。

但是,然後,某些類型的檢查可能會失敗或錯過他們的分析,如duplicate code check

因此,對於這種增量分析,您不僅需要限制源集合,還需要限制您要實施的一組規則,因爲其中一些規則對所有來源都是有意義的。


那麼,爲什麼不能你對每個文件運行一個完整的檢查,然後根據你的源代碼控制系統管理的變化來篩選結果?像這樣的東西存在嗎?

據我所知,尤其是像eclipse-cs的Eclipse插件:它,他們分析文件時,他們將顯示所有警告,即使源控制中提到的文件,因爲一個特定的修訂並沒有改變。

只有外部腳本將能夠做到這一點:
原理很簡單(雖然它可能是在執行時有點慢):

  • 爲每個文件,做一個diff檢查修改已經作出
  • 如果是,
    • svn blame註釋與包含上次更改版本號線。
    • 然後用checkstyle分析文件。
  • 然後腳本可以過濾當前修改行的警告(或對於給定修訂後修改的所有行)。
+0

它具有檢查一個源文件的功能。那麼,爲什麼不能對每個文件進行全面檢查,然後根據源代碼管理系統管理的更改過濾結果?像這樣的東西存在嗎? – Fostah 2009-09-18 12:03:39

0

我們開發了一個用於Checkstyle pluginSCM-Manager,管理混帳,顛覆和Mercurial倉庫的工具。如果激活,可以根據Checkstyle規則檢查提交的源代碼。如果檢查發現錯誤,則提交被中止。