【问题标题】:How to audit a Java EE project?如何审核 Java EE 项目?
【发布时间】:2011-12-19 08:59:54
【问题描述】:
我必须审核一个基于 JSF/CDI/EJB3.0/JPA 的 Java EE Web 项目(仅举几例)的代码架构质量和可维护性(最终确保我们得到了我们所支付的费用)所涉及的技术)。
这可能不是问的正确地方,但是您如何处理此类任务?
基本上,我会从粗粒度到细粒度,即从整个架构到 Java 代码。
把每一层都处理完整会更好吗?
我应该花更多的时间在底层吗?
您是否评估整个事情(构建、部署、测试)?
【问题讨论】:
标签:
java
jakarta-ee
architecture
audit
【解决方案1】:
要了解您的架构,您可以尝试JavaDepend,它提供了使用 CQL 查询代码的可能性,例如用于数据库的 SQL,具有超过 82 个指标和许多交互式视图,可以深入了解您的设计、架构和实现。
【解决方案2】:
请务必将其分解为关注的领域并逐个解决。我可以考虑考虑的领域是:
- 符合指定要求(希望这些是具体的)
- 性能/可扩展性
- 代码质量(包括您希望遵循的约定)
- 测试覆盖率
- 插件/库许可证
看起来其他人已经解决了第 3 项和第 4 项。由于您现在提出问题(大概是在您收到产品之后),除非您已经编写了自动化功能测试,否则第 1 和 2 项可能必须是手动过程(或者想要自动化测试,以便您可以检查您购买的未来版本)。 5 是一个有时被忽视但可能非常重要的项目。如果您要转售该软件,您可能不希望 GPL 代码被挂上。您需要查看包含的每个库的许可,并确定哪些许可符合您的目标。
【解决方案3】:
为了帮助进行代码级别审计,也可能有助于项目健康,SONAR 是一款可以提供帮助的软件...设置一些 maven 命令非常简单,附带许多经过验证的代码标准,例如代码质量、可重用性、不良做法测量等...
它在您的项目 SVN 或 CVS 上运行,并生成一个网站,其中的图形代表其创建的指标的过去和当前状态,因此您可以浏览项目数据并跟踪改进或故障。
它还使用其他答案中列出的所有 maven 和 maven 插件,例如 cobertura、查找错误等...
http://www.sonarsource.org/
只需下载并指向您的存储库。
【解决方案4】:
除了已经提到的较低级别的代码指标和静态分析之外,我还会添加一个像 Structure101 这样的工具来帮助分析更高级别的结构和依赖关系。它还可以帮助重构相同的内容。
识别依赖集群有助于确定应用程序的编写是否考虑了关注点分离和模块化,并有助于在考虑扩展或修改时识别潜在的痛点。
【解决方案5】:
在较低的物理/实现级别,我喜欢采用 maven 作为构建工具,然后配置广泛的 maven 报告,以生成一个充满各种代码指标的网站。
一旦设置完成并成为正常构建周期的一部分,它基本上会自行处理,您不必担心进行大型的双年度审计/追赶。
许多报告都有阈值限制,可以配置为在违反时使构建失败,即超过 n% 的 checkstyle 错误会导致构建失败。
Maven 还提倡构建应用程序的模块化方法,这导致更小的更易于理解和可重用的模块,以及关注点分离,即表示层和持久层的单独模块。 maven 提供的主要好处是管理模块之间的相互依赖关系。
不过,这在更高级别的架构层上对您没有多大帮助,因此需要一种补充方法来覆盖该维度。
在此链接中查看一些示例报告
http://maven.apache.org/plugins/maven-dependency-plugin/project-reports.html