如何审核JavaEE项目?

如何审核JavaEE项目?,java,jakarta-ee,architecture,audit,Java,Jakarta Ee,Architecture,Audit,我必须审核一个基于JSF/CDI/EJB3.0/JPA的JavaEEWeb项目的代码体系结构质量和可维护性(最后确保我们得到了我们所付出的代价)(仅列举一些涉及的技术) 这可能不是一个合适的地方,但你如何处理这类任务? 基本上,我将从粗粒度到细粒度,即从整个体系结构到java代码。 完全处理每一层是否更好? 我应该花更多的时间在底层上吗 您是否评估了整个过程(构建、部署、测试)?在较低的物理/实现级别,我喜欢做的是采用maven作为构建工具,然后配置广泛的maven报告,以生成一个充满各种代码度

我必须审核一个基于JSF/CDI/EJB3.0/JPA的JavaEEWeb项目的代码体系结构质量和可维护性(最后确保我们得到了我们所付出的代价)(仅列举一些涉及的技术)

这可能不是一个合适的地方,但你如何处理这类任务? 基本上,我将从粗粒度到细粒度,即从整个体系结构到java代码。 完全处理每一层是否更好? 我应该花更多的时间在底层上吗


您是否评估了整个过程(构建、部署、测试)?

在较低的物理/实现级别,我喜欢做的是采用maven作为构建工具,然后配置广泛的maven报告,以生成一个充满各种代码度量的网站

  • 对于初学者来说,可以报告代码与指定标准的一致性,编码标准的一致性有许多明显的好处,大多数项目只会采用预配置的标准之一,例如sun或apache
  • 列表列出了潜在的编程错误
  • 我使用过的代码覆盖率报告有多种选择。这些代码逐行显示应用程序中单元测试涵盖的部分。Maven支持构建生命周期中的单元测试,将它们作为构建的一部分运行。这救了我几次
  • 标识重复的代码,并突出显示可能需要重构的区域
一旦设置好并成为正常构建周期的一部分,它基本上会自行处理,您就不必担心进行大型的两年一次的审核/跟进

许多报告都有阈值限制,如果违反这些限制,可以将其配置为使生成失败,即超过n%的checkstyle错误会导致生成失败

Maven还推广了一种模块化的方法来构建应用程序,这导致更小、更易于理解和重用的模块,以及关注点的分离,即表示层和持久层的分离模块。maven提供的主要好处是管理模块之间的相互依赖关系

但是,这在更高级别的体系结构层上对您帮助不大,因此需要一种补充方法来覆盖该维度

请参见此链接中的一些示例报告

为了帮助代码级审计和项目健康,SONAR是一个可以提供帮助的软件。。。设置一些maven命令非常简单,附带了许多经过验证的代码标准,如代码质量、可重用性、不良实践度量等等

它在您的项目SVN或CVS上运行,并生成一个网站,其中的图形表示它正在创建的度量的过去和当前状态,因此您可以导航项目数据并跟踪改进或故障

它还使用其他答案中列出的所有maven和maven插件,如cobertura、find bugs等


只需下载并指向您的Repo。

除了前面提到的较低级别的代码度量和静态分析之外,我还添加了一个类似Structure101的工具来帮助分析较高级别的结构和依赖关系。它还可以帮助重构相同的对象


确定依赖项的集群有助于确定应用程序的编写是否考虑了关注点和模块化的分离,并有助于确定在考虑扩展或修改时的潜在痛点。

确保将其分解为关注的领域,并分别加以解决。我想考虑的领域是:

  • 符合规定要求(希望这些要求是具体的)
  • 性能/可扩展性
  • 代码质量(包括您希望遵循的约定)
  • 测试覆盖率
  • 插件/库许可证

  • 看起来其他人已经解决了项目3和4。由于您现在正在问这个问题(大概是在您收到产品之后),1和2可能必须是手动过程,除非您已经编写了自动功能测试(或者希望自动测试,以便您可以检查所购买产品的未来版本)。5是一个有时被忽略但可能非常重要的项目。如果你打算转售这个软件,你可能不想把GPL代码挂在里面。您需要查看包含的每个库的许可证,并确定哪些许可证与您的目标兼容。

    要了解您的体系结构,您可以尝试使用CQL查询代码,如SQL for database,其中包含超过82个指标和许多交互视图,深入您的设计,体系结构和实施。

    这是一种什么样的审计?安全代码质量?还有别的吗?thx stephen,我正在编辑我的问题