是否有可能編寫自己的gnatcheck規則,如果有的話,是否有人可以指點我一個很好的參考?我正在尋找一種正在使用的特定「風格」,如果我可以簡單地寫一條規則,說如果你看到所說的風格,它會發出一個警告或一個錯誤,這樣我們可以在這個時候標記沒有遵循特定的標準。如何編寫gnatcheck規則
回答
一點背景可能會有所幫助在這裏。雖然樣式檢查爲執行用戶樣式準則提供了許多承諾,但這不完全是他們的目的。
這些檢查的主要目的是對Ada編譯器本身的源代碼強制執行Ada Core(維護編譯器的人)風格。您可能會注意到,如果您嘗試編譯其中一個編譯器自己的源文件,則檢查會自動打開。
如果由檢查自己執行的樣式本身是用戶可配置的,那麼它並不真正服務於AdaCore的目的,因此它們不添加這樣的功能。
如果您想自己使用它,您的第一個選擇就是堅持AdaCore的編碼風格。過去我並沒有覺得這很可怕,所以你可能只是看着這樣做。
儘管如此,使某種可配置性是一個非常酷的功能,有人補充。如果你走這條路線,你可能不得不使其可配置(使用當前行爲作爲默認行爲),而不僅僅是改變檢查。原因是您必須修改編譯器源才能完成此操作,正如我上面提到的那樣,編譯器在編譯自身時會打開檢查。你真的不想重新格式化大量工作的Gnat編譯器源文件。
我真的很希望看到有人在某個時候這樣做,因爲這會使檢查對除了AdaCore之外的人員更有用。
作爲參考,在GNAT User's Guide的§3.2.5 Style Checking
下描述了現有的GNAT樣式檢查。由於規則是由編譯器執行的,所以附加規則將需要相應的修改。
除了trashgod的參考,我覺得這個PDF的第7.1節可能會有所幫助:
http://extranet.eu.adacore.com/articles/HighIntegrityAda.pdf
啊,[GNATcheck](http://www.adacore.com/2011/01/14/gnatcheck-reference-manual/)是GNAT Pro的一部分。 – trashgod
也是GNAT GPL 2011的一部分。我在share/doc/gnat/pdf/gnatcheck_rm.pdf的發行版中找到了RM。強烈的印象是,你只能改變檢查哪些規則,所以如果-gnaty不支持你的檢查,你將失去運氣。 AdaControl會提供幫助嗎? (http://www.adalog.fr/adacontrol2.htm) –
至少GNAT GPL 2010和2009。 – JasonFruit
- 1. 如何編寫Apache重寫規則?
- 2. prolog編寫規則
- 3. 編寫mod重寫規則
- 4. 野牛如何編寫規則?
- 5. 如何爲proguard編寫規則?
- 6. 如何編寫規則QUERY_STRING RewriteEngine敘述
- 7. 如何在Sass中編寫CSS規則?
- 8. 如何編寫正確的htacess規則?
- 9. 如何在htaccess中編寫301規則
- 10. 如何編寫嵌套的PostgreSQL規則?
- 11. 如何寫重寫規則
- 12. Htaccess - 如何重寫規則
- 13. 如何.htaccess重寫規則?
- 14. 如何重寫規則?
- 15. 如何編寫自引導編譯器的編譯規則
- 16. PHP正則表達式:如何編寫規則
- 17. 如何用正則表達式編寫遞歸scrapy規則?
- 18. 如何編寫重寫規則來隱藏查詢字符串?
- 19. 如何在php的.htaccess文件中編寫重寫規則
- 20. 如何編寫這個URL重寫規則?
- 21. 如何向htaccess寫入重寫規則?
- 22. 如何寫htaccess文件重寫規則
- 23. 如何寫在.htaccess重寫規則
- 24. 重寫規則
- 25. 重寫規則
- 26. 重寫規則
- 27. 重寫規則
- 28. 重寫規則
- 29. 重寫規則
- 30. 如何將nginx規則改寫爲htacces規則?
IMO,讓編譯器強制執行樣式檢查是一個糟糕的選擇(樣式畢竟是一個偏好問題);更好的選擇是讓編譯器能夠讀取一些有效的代碼並以適合的任何[user-specified]風格重新格式化它。 – Shark8
@ Shark8 - 我可以看到你來自哪裏。問題是,如果你需要某種風格的執行(或至少是警告),那麼除了最瑣碎的情況外,它需要一定量的源代碼解析。一個編譯器顯然可以做到這一點,一個單獨的程序不能訪問編譯器的代碼庫就會有很多工作要做。 –
好吧,如果您使用編譯器本身將源重新格式化爲某種「標準樣式」,那麼「單獨程序」參數就是基於無效假設。 – Shark8