在Java 5和Java 6之間,有關@Override
註解(源於接口的方法(與超類相對))的規則已更改 - 在它們未被允許之前,但在它們之後。但是,它們不是所需的由javac。如何靜態檢測缺少的@Override註釋?
一些像eclipse這樣的IDE可能會爲這些丟失的覆蓋產生錯誤或警告。我正在尋找任何可以檢測丟失覆蓋的靜態分析工具,所以我可以以編程方式報告/阻止它們。
它似乎並不像我findbugs等人可以做到的那麼大 - 可能是因爲@Override
只有源保留級別,所以不存在於這些工具的.class文件中操作和源代碼級別的工具(如checkstyle)不瞭解完整的類層次結構。
當我調用checkstyle時,沒有類路徑的地方。對checkstyle檢查來說,這很好,但checkstyle如何知道我的'void doStuff()'會覆蓋你的'void doStuff()'方法,而無需使用類(無論是在源代碼還是classpath中)。 – emory
是的,所以即使除了運行時間保留問題之外,checkstyle只是對文件進行「本地」檢查,可能無法檢測到這一點。 – BeeOnRope
我不明白爲什麼保留是一個問題。檢查器將需要訪問您的源代碼和您的依賴關係的類文件。它不需要訪問你的依賴關係的源代碼。 (如果在源代碼中發現缺少'@ Override',表示您沒有寫權限,您會怎麼做?) – emory