JArchitect是用于Java代码库的静态分析工具,它提供交互式GUI和HTML报告,用于查找代码中过于复杂或有问题的区域,执行分析以重构并比较随时间的变化。 在版本3中,添加了类似LINQ的查询语言,该工具使该工具成为功能极其强大的报表引擎,可用于在构建系统上强制执行编码标准规则。 以下是一些有用的JArchitect功能:

重庆

JArchitect的强大功能是对代码查询Linq(CQLinq)的支持。 CQLinq允许开发人员使用LINQ查询来查询Java代码,

例如CQlinq可以回答以下请求:

–哪些方法创建特定类的对象?

从Method中的m中,其中m.CreateA(“ MyPackage.MyClass”)选择m

-哪些方法分配特定字段?

从方法中的m中,其中m.AssignField(“ MyNamespace.MyClass.m_Field”)选择m

-哪种复杂的方法不够评论?

从Application.Methods中的m中获得,其中m.CyclomaticComplexity> 15 && m.PercentageComment <10。选择新的{m,m.CyclomaticComplexity,m.PercentageComment}。 当CQLinq查询返回特定结果时,也会自动向您发出警告。 例如,我不希望我的用户界面层直接依赖于数据库层:

warnif count > 0

从包中的p中,其中p.IsUsing(“ DataLayer”)&&(n.Name == @“ UILayer”)选择p

JArchitect提供了80多个指标,这些指标与您的代码组织,代码质量和代码结构有关。 这些度量可以在CQLinq中用于创建您的编码自定义规则,JArchitect可以集成到您的构建系统中以增强代码库的质量。

依赖图

依赖关系图对于探索现有代码库非常有用,我们可以进入任何项目,程序包或类,以发现代码元素之间的依赖关系。

Java 实现 josn key灵活配置_python

依赖矩阵

DSM(依赖关系结构矩阵)是一种表示和浏览组件之间的依赖关系的紧凑方法。

Java 实现 josn key灵活配置_大数据_02

为什么使用图形和DSM这两种不同的方式表示相同的信息? 因为有一个 交易:

  1. 图更直观,但是当节点和边的数量增加时,这是完全无法理解的(几十个框就足以使图太复杂)
  2. DSM不太直观,但可以非常有效地表示大而复杂的图形。 我们说DSM规模与图表相比。

公制视图

在“度量标准视图”中,代码库通过树形图表示。 Treemapping是一种使用嵌套矩形显示树状结构数据的方法。 JArchitect树图中使用的树结构是通常的代码层次结构:

  • Java项目包含软件包
  • 套餐包含类型
  • 类型包含方法和字段

在树形图中,矩形代表代码元素。 选项级别确定由单位矩形表示的代码元素的类型。 选项级别可以采用5个值:项目,包,类型,方法和字段。 下面的两个屏幕截图显示了相同的代码库,分别通过左侧的类型级别和右侧的名称空间级别表示。

Java 实现 josn key灵活配置_大数据_03

如果当前正在编辑CQLinq查询,则查询匹配的代码元素集在树状图中显示为一组蓝色矩形。 直观地查看特定CQLinq请求所涉及的代码元素非常有帮助。

比较版本

在软件开发中,产品不断发展。 因此,开发人员和架构师必须注意对代码库的修改。 现代的源代码存储库处理增量开发。 他们可以枚举2个版本的源代码文件之间的差异。 JArchitect可以告诉您在2个构建之间进行了哪些更改,但它不仅仅具有简单的文本比较功能。 它可以区分注释更改和代码更改,添加/删除的内容和刚刚修改的内容。 使用JArchitect,您可以查看代码量度如何变化,并且可以知道组件之间的耦合是否在增加。 JArchitect也可以不断检查修改,以在兼容性发生重大变化时立即警告您。

生成自定义报告

JArchitect可以通过JArchitect.Console.exe分析源代码和Java项目。 每次分析代码库时,JArchitect都会生成一个报告,该报告可以告知您开发的状态。 您可以自定义报告中显示的部分,甚至可以提供自己的XSL工作表以进行完全自定义。 您还可以构建自己的CQLinq约束集,将在每次分析时进行检查。 每当违反约束时,该报告都会向您发出警告。 此功能使自动设计和质量回归测试成为现实。

JArchitect为所有开源Java贡献者提供了专业许可 。 分析他们的代码库可能很有用。 因此,如果您想尝试一下,请在此处查看更多详细信息。 编码愉快!

翻译自: https://www.javacodegeeks.com/2013/03/jarchitect-became-free-for-java-open-source-contributors.html