[英]How to audit a Java EE project?
我将审核基于JSF / CDI / EJB3.0 / JPA的Java EE Web项目的代码体系结构质量和可维护性(最终确保我们已经付出了代价)(仅仅是为了命名一些技术)参与)。
这可能不是正确的问题,但您如何处理这类任务? 基本上,我将从粗粒度到细粒度,即从整个架构到java代码。 完全处理每一层是否更好? 我应该花更多时间在低层吗?
你评估整个事情(构建,部署,测试)吗?
在较低的物理/实现级别,我喜欢做的是采用maven作为构建工具,然后配置广泛的maven报告,以生成一个充满各种代码指标的网站。
一旦设置完成并成为正常构建周期的一部分,它基本上就会自行处理,您不必担心进行大量的双年度审计/追赶。
许多报告都有阈值限制,如果被破坏,可以配置为使构建失败,即超过n%的checkstyle错误,导致构建失败。
Maven还推广了一种用于构建应用程序的模块化方法,这导致了更小的更易理解和可重用的模块,以及关注点的分离,即用于表示和持久层的单独模块。 maven提供的主要好处是管理模块之间的相互依赖关系。
这对于更高级别的架构层没有帮助,因此需要一种补充方法来覆盖该维度。
请参阅此链接中的一些示例报告
http://maven.apache.org/plugins/maven-dependency-plugin/project-reports.html
为了帮助进行代码级别的审计,可能还有项目运行状况,一个可以提供帮助的软件就是SONAR ......设置一些maven命令非常简单,附带了许多经过验证的代码标准,如代码质量,可重用性,不良实践测量等等...
它在您的项目SVN或CVS上运行,并生成一个网站,其中的图形表示其创建的指标的过去和当前状态,因此您可以导航项目数据并跟踪改进或故障。
它还使用了cobertura等其他答案中列出的所有maven和maven插件,查找错误等...
只需下载并指向您的回购。
除了已经提到的低级代码度量和静态分析之外,我还添加了一个类似Structure101的工具来帮助分析更高级别的结构和依赖关系。 它也可以帮助重构。
识别依赖关系群可以帮助确定应用程序是否在考虑分离关注点和模块性时编写,并且可以在考虑扩展或修改时帮助识别潜在的痛点。
务必将其分解为关注的领域并单独解决。 我能想到要考虑的领域是:
看起来其他人已经解决了第3项和第4项。由于您现在提出问题(可能是在您收到产品之后),1和2可能必须是手动过程,除非您已经编写了自动功能测试(或者想要自动化测试,以便您可以检查您购买的未来版本)。 5是有时被忽略但可能非常重要的项目。 如果您要转售此软件,您可能不希望GPL代码被吸引。 您需要查看所包含的每个库的许可证,并确定哪些库与您的目标兼容。
要了解您的体系结构,您可以尝试使用JavaDepend,它可以使用CQL查询代码,例如SQL for database,具有超过82个度量标准和许多交互式视图,可深入到您的设计,体系结构和实现中。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.