在某些语言中,有规则/最佳实践/等。促进软件安全,确保预期的运行时行为等。想到的两个是用于 C/C++ 的 MISRA 和用于 Ada 的 Ravenscar 配置文件。如果您的代码被标记为遵循这些标准,通常会有一种温暖的模糊感。Java有这样的标准吗?
5 回答
我认为 Java 没有 MISRA C/C++ 最佳实践之类的东西,而且我认为像 Java 这样的语言也没有必要这样做,因为它没有像 C 和 C++ 那样多的未定义或未指定行为的角落有。Java 中缺少显式指针以及数组索引的边界总是由运行时检查等特性使 Java 成为比 C 或 C++ 更安全的语言。
大多数 Java 开发人员似乎都遵循一个通用的编码标准:Java 编程语言的代码约定,但这更像是一种风格指南,而不是最佳实践指南。
有一些很好的和众所周知的 Java 静态代码分析工具:例如FindBugs和PMD,它们将检查您的代码是否存在可能的危险结构或不良做法。
如果您想了解 Java 中的潜在陷阱,那么强烈推荐两本书:Effective Java和Java Puzzlers。
另外,类似的资源包括:
目前,没有 MISRA Java - 也没有任何立即创建的计划。
MISRA 技术委员会已经对该主题进行了几次简短的讨论,但在没有任何需求(和/或自愿参与该主题的工作)的情况下,它不太可能发生。
更新:六年过去了……
这个问题已经被问过好几次了,在我作为演讲者参加的会议上,通常得到了听众的广泛支持。我总是通过询问愿意成为委员会成员的观众来回答……这让房间安静了:(
TL;DR:如果有足够多的志愿者挺身而出,我们就会去做!
[以个人身份发表,尽管是 MISRA 技术委员会成员]
SEI 证书:
Java 编码指南包括在 Java 标准版 7 平台环境中安全编程的推荐实践。这是一项正在进行的工作,我们积极寻求您的反馈和参与,以使这项工作取得成功。我们感谢并承认所有的贡献者。
https://www.securecoding.cert.org/confluence/display/jg/Java+Coding+Guidelines
对于那些关注这个线程的人,有一个开放的安全关键 JAVA (oSCJ) 计划正在进行,它正在为安全关键应用程序 (JSR-302) 定义 JAVA 语言的一个子集。 http://jcp.org/en/jsr/detail?id=302
有一本书叫《代码完成》。这是由曾在 Microsoft 工作过的程序员编写的,并且还具有使用 2/3 不同高级语言的专业软件开发知识。除了 MISRA C++,我还使用这本书。“Code Complete”是一本独立于语言的书籍,有助于塑造您的专业软件工程实践。