如果有人瞭解Vera ++或靜態分析器,請仔細閱讀。Vera ++ Rules Implementaion
任何人都可以請指導我一點如何實現複雜的C++規則驗證機器作爲靜態分析器。我想實現複雜的規則,如基類中的虛函數,識別用戶定義的變量,如類,結構等。變量範圍如全局,本地,靜態等。我理解Vera ++非常好,根據我的理解,它只執行令牌解析,語言的語境需要通過腳本實現(如果語言像C++一樣,實現的上下文可能太複雜);因爲區分a * b; (它可以是類類型a的指針b)或a * b;(可以簡單地是兩個變量之間的乘法);
我甚至覺得複雜規則的實現可能需要像狀態機這樣的編譯器,以便腳本可以理解語言的上下文。
我的問題就是要問:
處於靜態分析規則執行方面我的理解是否正確。
你能否引導我一點點我該如何着手這項任務的成就。
這些任務可以通過tcl的REGEXP簡化。
是否有任何具體的設計方法可以建議良好實施Solid C++代碼分析器。
感謝
也許這有助於:http://stackoverflow.com/questions/13139556/vera-tcl-rule-list-all-local-variables/13143067#13143067 –
您可以在令牌級別(Vera提供)收集有關C++的一些啓發式信息,但是任何類型的嚴重語義分析都需要真正的解析和符號表構造。否則,你會如何知道像「X * Y」這樣簡單的事情?手段?請參閱http://stackoverflow.com/questions/243383/why-cant-c-be-parsed-with-a-lr1-parser/1004737#1004737 –