2011-06-21 97 views
2

是否有可能編寫自己的gnatcheck規則,如果有的話,是否有人可以指點我一個很好的參考?我正在尋找一種正在使用的特定「風格」,如果我可以簡單地寫一條規則,說如果你看到所說的風格,它會發出一個警告或一個錯誤,這樣我們可以在這個時候標記沒有遵循特定的標準。如何編寫gnatcheck規則

回答

2

一點背景可能會有所幫助在這裏。雖然樣式檢查爲執行用戶樣式準則提供了許多承諾,但這不完全是他們的目的。

這些檢查的主要目的是對Ada編譯器本身的源代碼強制執行Ada Core(維護編譯器的人)風格。您可能會注意到,如果您嘗試編譯其中一個編譯器自己的源文件,則檢查會自動打開。

如果由檢查自己執行的樣式本身是用戶可配置的,那麼它並不真正服務於AdaCore的目的,因此它們不添加這樣的功能。

如果您想自己使用它,您的第一個選擇就是堅持AdaCore的編碼風格。過去我並沒有覺得這很可怕,所以你可能只是看着這樣做。

儘管如此,使某種可配置性是一個非常酷的功能,有人補充。如果你走這條路線,你可能不得不使其可配置(使用當前行爲作爲默認行爲),而不僅僅是改變檢查。原因是您必須修改編譯器源才能完成此操作,正如我上面提到的那樣,編譯器在編譯自身時會打開檢查。你真的不想重新格式化大量工作的Gnat編譯器源文件。

我真的很希望看到有人在某個時候這樣做,因爲這會使檢查對除了AdaCore之外的人員更有用。

+0

IMO,讓編譯器強制執行樣式檢查是一個糟糕的選擇(樣式畢竟是一個偏好問題);更好的選擇是讓編譯器能夠讀取一些有效的代碼並以適合的任何[user-specified]風格重新格式化它。 – Shark8

+0

@ Shark8 - 我可以看到你來自哪裏。問題是,如果你需要某種風格的執行(或至少是警告),那麼除了最瑣碎的情況外,它需要一定量的源代碼解析。一個編譯器顯然可以做到這一點,一個單獨的程序不能訪問編譯器的代碼庫就會有很多工作要做。 –

+0

好吧,如果您使用編譯器本身將源重新格式化爲某種「標準樣式」,那麼「單獨程序」參數就是基於無效假設。 – Shark8

2

除了trashgod的參考,我覺得這個PDF的第7.1節可能會有所幫助:

http://extranet.eu.adacore.com/articles/HighIntegrityAda.pdf

+0

啊,[GNATcheck](http://www.adacore.com/2011/01/14/gnatcheck-reference-manual/)是GNAT Pro的一部分。 – trashgod

+0

也是GNAT GPL 2011的一部分。我在share/doc/gnat/pdf/gnatcheck_rm.pdf的發行版中找到了RM。強烈的印象是,你只能改變檢查哪些規則,所以如果-gnaty不支持你的檢查,你將失去運氣。 AdaControl會提供幫助嗎? (http://www.adalog.fr/adacontrol2.htm) –

+0

至少GNAT GPL 2010和2009。 – JasonFruit