2010-05-20 64 views
1

可以定製PMD以在合理的時間內完全支持新語言。我的意思是我知道技術上幾乎可以做任何事情,但我想知道這是否可以在合理的時間內完成?例如。 <2周可以定製PMD以完全支持新語言嗎?

這頁提到如何寫CPD解析器http://pmd.sourceforge.net/cpd-parser-howto.html

但是,這只是複製/粘貼檢測?編寫一個CPD解析器是否能讓我完全支持PMD中的rile集?

+0

有沒有「可插拔」或「可擴展」的方式來做到這一點? – tinny 2010-05-20 03:56:35

+0

「rile sets」? – 2010-05-21 19:02:47

回答

1

我猜不是,但我不是PMD專家(我有自己的偏見,請檢查我的生物)。

的問題是:

  • 可以定義爲我的langauge語法很快(也許,這取決於你有多好語言,多麼凌亂的,由PMD所提供的解析機械強度)
  • 您可以定義我的語言的語義,以便PMD提供的「語義檢查」工作。你必須這樣做,因爲語法告訴你(和一個工具)沒有關於語法的語義。我猜想PMD工具的「語義檢查」非常接近Java的精確細節;如果你的語言完全匹配java,這將是零工作。但它沒有,或者你不會問這個問題。而語言語義的差異,甚至是次要的,會導致對代碼解釋的不連續的改變。在開始執行「嚴肅」的語義之前,您可能必須在代碼中爲這些符號的聲明(以及「語義」類型)構建一個符號表映射標識符。基於我所使用的工具基礎架構,這一步僅需1-2個月即可獲得真實語言。
  • 最後,您可能必須編寫特定於您的語言的特殊PMD檢查。這也需要時間和精力。

我建立了通用的編譯器類型的機器(解析器,流程分析器,樣式/錯誤檢查器),並一直向我們的機器WRT詢問相應的這個問題。我們嘗試提供大量機器,嘗試使整合新語言變得容易,並且我們一直在努力使這種「方便且快速」達到15年以上。它仍然不方便,幾周後我們無法使用我們的工具來做到這一點。我懷疑PMD更好。

+0

很好的答案,謝謝 – tinny 2010-05-21 22:18:19