在某些語言中,有規則/最佳實踐/等。提升軟件安全性,確保預期的運行時行爲等。想到的兩個是C/C++的MISRA和Ada的Ravenscar配置文件。如果按照這些標準進行標記,通常會對代碼產生溫暖的模糊感。 Java有沒有這樣的標準?是否有與MISRA C相當的Java?
回答
我不認爲有什麼像JavaRA的MISRA C/C++最佳實踐,我認爲這對於像Java這樣的語言來說也不是那麼必要,因爲它沒有很多未定義或未指定行爲的角落像C和C++一樣。諸如Java中缺少顯式指針以及數組索引邊界總是被運行時檢查的事實使Java成爲比C或C++更安全的語言。
大多數Java開發人員似乎都遵循一個通用的編碼標準:Code Conventions for the Java Programming Language,但這是比最佳實踐指南更具風格的指南。
有一個Java的一些良好的和衆所周知的靜態代碼分析工具:FindBugs和PMD例如,這將檢查你的代碼可能是危險的結構或不良做法。
如果您想了解Java中潛在的陷阱,那麼強烈推薦兩本書:Effective Java和Java Puzzlers。
+1:我在一段時間內看到的問題的最佳答案:) – 2011-05-19 05:15:10
我看了一下你提到的代碼約定,我認爲這就是我去執行一個約定。無論如何,我幾乎都以我的個人風格來關注它。我知道FindBugs和PMD,就像我之前使用過的那樣。我不認爲Java(或類似的)有MISRA,但我想我會問一下確認。 – gmletzkojr 2011-05-19 13:41:07
目前,沒有MISRA Java - 也沒有任何立即計劃來創建一個。
MISRA技術委員會曾多次簡要討論這個話題,但由於沒有任何需求(和/或志願者參與其中),這種情況不太可能發生。
[轉貼以個人身份,儘管是MISRA科技董事會成員]
有一本書叫「代碼大全」。這是由一位曾在微軟工作過的程序員編寫的,他還具有使用2/3種不同高級語言進行專業軟件開發的知識。除了MISRA C++,我還使用這本書。 「完整代碼」是一門獨立於語言的書籍,有助於塑造您的專業軟件工程實踐。
對於那些關注此主題的人,有一個開放式安全關鍵JAVA(oSCJ)計劃正在進行,它定義了安全關鍵型應用程序(JSR-302)的JAVA語言子集。 http://jcp.org/en/jsr/detail?id=302
SEI CERT:
Java編碼準則包括建議在Java標準版7平臺環境安全的編程實踐。這是一項正在進行的工作,我們積極尋求您的反饋意見和參與,使這項工作取得成功。我們感謝並承認所有的貢獻者。
https://www.securecoding.cert.org/confluence/display/jg/Java+Coding+Guidelines
- 1. 是否有與Java MessageFormat相當的Ruby?
- 2. 是否有與NSPredicate相當的Java?
- 3. 是否有與frexp相當的Java?
- 4. 是否有與Java相當的getchar?
- 5. 是否有與IFNULL相當的Objective-C?
- 6. 是否有與C++函數指針相當的Java?
- 7. 是否有相當於Java的Boost :: Python?
- 8. PHP是否有相當於Java的RequestDispatcher.forward?
- 9. 是否存在與Java Selector類相當的C#?
- 10. 是否有相當於c#中的typedef?
- 11. 是否有與HighLine相當的Python?
- 12. 是否有與Haxe相當的atexit()?
- 13. 是否有與CSS/sass相當的JavaScript
- 14. 是否有與VBScript相當的log4j?
- 15. 是否有與rails number_to_human相當的angularjs?
- 16. 是否有與Oracle相當的mysqldump
- 17. 是否有與Java中的Scanner類相當的單聲道(.Net)
- 18. 是否有與OpenSSL的bn_rand_range相當的java?
- 19. 是否有與ASP.NET中的Java EE ServletContext相當的功能?
- 20. 在vbscript中是否有與Java的HashSet相當的功能?
- 21. 是否有與Apple的核心數據相當的Java?
- 22. C#中的Java Media Framework是否有相當於?
- 23. 是否有與cracklib相當的Java /實現?
- 24. 是否有與C#中的F#Seq.windowed相當的功能?
- 25. 是否有與XNA的更新功能相當的Objective-C?
- 26. C#/ .NET中是否有與Perl的URI.pm相當的功能?
- 27. 是否有與C#相當的ActiveRecord#find_by等價物?
- 28. 是否有與C#摘要標籤相當的PHP?
- 29. F#是否與Haskell相當?
- 30. 是否有與C#的Java的ToStringBuilder相當的功能?什麼是一個好的C#版本功能?
我使用IntelliJ CE幾乎所有的意圖打開。它會在我輸入代碼時檢查我的源代碼(而不是等待編譯代碼),但許多代碼也可以快速修復,所以您更可能更改代碼並更改編寫代碼的方式。有超過650個支票,但我發現大約150個對我來說通常是有用的。有時我使用「修復」爲我編寫代碼;) – 2011-05-19 05:18:47