如何审核Java EE项目?

时间:2011-11-01 09:58:27

标签: java java-ee architecture audit

我将审核基于JSF / CDI / EJB3.0 / JPA的Java EE Web项目的代码架构质量和可维护性(最终确保我们已经付出了代价)(仅举几例)所涉及的技术)。

这可能不是一个正确的问题,但你如何处理这类任务呢? 基本上,我将从粗粒度到细粒度,即从整个架构到java代码。 完全处理每一层是否更好? 我是否应该花更多时间在低层?

你评估整个事情(构建,部署,测试)吗?

5 个答案:

答案 0 :(得分:6)

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

  • 对于初学者而言,maven checkstyle plugin可以报告与指定标准的代码一致性,编码标准的一致性具有许多明显的好处,大多数项目将简单地采用预先配置的标准之一,例如太阳或阿帕奇。
  • findbugs plugin列出了潜在的编程错误
  • 可以选择代码覆盖率报告,我使用了cobertura。这些显示了应用程序中的行,其中的部分由单元测试覆盖。 Maven在构建生命周期中支持单元测试,将它们作为构建的一部分运行。这节省了我几次。
  • PMD plugin标识重复的代码,并突出显示可能需要重构的区域。

一旦设置完成并成为正常构建周期的一部分,它基本上会自行处理,您不必担心每两年进行一次大型审计/追赶。

许多报告都有阈值限制,可以配置为在违反构建时失败,即超过n%的checkstyle错误,导致构建失败。

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

虽然这对高级架构层没有多大帮助,但是需要一种互补的方法来覆盖这个层面。

在此链接中查看一些示例报告  http://maven.apache.org/plugins/maven-dependency-plugin/project-reports.html

答案 1 :(得分:2)

为了帮助进行代码级审计,可能还有项目运行状况,一个可以提供帮助的软件就是SONAR ......设置一些maven命令非常简单,附带了许多经过验证的代码标准,如代码质量,可重用性,不良做法测量等等......

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

它还使用了其他答案中列出的所有maven和maven插件,如cobertura,发现错误等...

http://www.sonarsource.org/

只需下载并指向您的回购。

答案 2 :(得分:0)

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

识别依赖关系群可以帮助确定应用程序是否在考虑分离关注点和模块性时编写,并且可以在考虑扩展或修改时帮助识别潜在的痛点。

答案 3 :(得分:0)

务必将其分解为关注的领域并单独解决。我能想到要考虑的领域是:

  1. 符合指定要求(希望这些是具体的)
  2. 性能/可扩展性
  3. 代码质量(包括您希望遵循的惯例)
  4. 测试覆盖率
  5. 插件/图书馆许可
  6. 看起来其他人已经解决了第3项和第4项。由于您现在提出问题(大概是在您收到产品之后),1和2可能必须是手动过程,除非您已经编写了自动功能测试(或者想要自动化测试,以便检查您购买的产品的未来版本)。 5是有时被忽略但可能非常重要的项目。如果您要转售此软件,您可能不希望GPL代码被吸引。您需要查看所包含的每个库的许可证,并确定哪些库与您的目标兼容。

答案 4 :(得分:0)

要了解您的体系结构,您可以尝试JavaDepend它可以使用CQL查询代码,例如SQL for database,具有超过82个指标和许多交互式视图,可深入到您的设计,体系结构和实现中