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