«

idea 的代码分析

时间:2024-3-2 17:39     作者:韩俊     分类: Android


代码分析

IntelliJ IDEA 通过对代码的检查来进行代码分析。对 Java 和其他支持的语言有无数的代码检测行为存在。该检查不仅能发现编译错误,还能发现效率低下的问题代码。 当有 unreachable code, unused code, non-localized string, unresolved method, memory leaks, spelling problems 等问题 - idea会帮你非常快的找到它。

IntelliJ IDEA的代码分析可以灵活配置。 可以启用/禁用每个代码检查行为,改变问题的严重等级 ,创建检查自定义设置的配置文件,在不同的范围设置适用的不同的检查, 禁止在特定的代码段的检测 等等。

该分析可以以几种方式来执行:
1. 默认情况下,IntelliJ IDEA的分析所有打开的文件,并在编辑器有问题的代码右边高亮显示。编辑器右边可以看到整个文件的分析状态 - 当检测到问题时,在顶端的图标会改变颜色。

2. 你可以在在指定范围内以批量模式运行代码分析,这个范围可以大到整个项目。
3. 如果必要的话,你还可以在一个特定的范围内应用一个单一的代码检查。
对于大多数检测到的代码问题,IntelliJ IDEA 提供快速修复建议 。 在同一个文件中可以通过按 F2 /⇧+ F2 实现从一个高亮的错误位置快速导航到另外一个高亮的错误位置。

IntelliJ IDEA可以在各个层面对您的项目进行分析:

On-the-fly 使用 intention actions 分析,idea 通过分析你键入的内容,实时的提示你修复问题。
代码检查 的目的是指出有关程序设计问题。
高亮层级允许你控制当前文件中所高亮的问题的范围。
依赖分析通过代码层次关系帮助你了解你的源代码的结构,探索你的项目的组成部分之间的关系,跟踪项目内的依赖关系和工作流程。
数据流分析可以帮助你进行代码研究。
逆向工程

数据流分析

IntelliJ IDEA 提供了数据流分析功能,以帮助进行代码研究-更好地了解遗留的项目代码,解释代码复杂的部分,找到瓶颈源,等等。

具体而言, Dataflow to/from here功能允许您:

查看分配给这个变量的值来自于哪里。
找出这个变量所有可以有的值。
找出该 表达式变量方法参数 可以流入哪些地方。
揭示潜在的可能出现 NullPointerException 地方。

如果想要追溯传递给在插入符处的参数的值,使用 Analyze | Dataflow to Here 命令,你可以创建源代码的切片视图。 此外,使用 Analyze | Dataflow from Here 你可以找到表达式的数据能够流入的地方。 每个数据流分析的结果使用专用的标签显示在 Analyze Dataflow tool window中。

数据流分析结果的读法

Dataflow to Here

Dataflow to here 展示了这个变量的值是从哪些地方传递过来的,并且包含传递给改变了的值是那里传递过来的,值的传递链。

示例一:

authType 这个成员变量的值来自于,SingleOnMessage.setAuthType() 这个方法中的 this.authType = authType 这条语句,authType 这个参数的值来自于 ClusterSingleSignOn.register() 这个方法的 msg.setAuthType(authType) 这条语句,。。。。。。

示例二:

fragmentTransaction 这个变量声明在 MainActivity的 private FragmentManager fragmentManager 这一行,之后赋值在 fragmentManager = getFragmentManager(); 这一行。

Dataflow from Here

Dataflow from here 展示了这个变量的值传递到了哪些地方,并且包含传递之后的值又被传递到哪些地方去了,值的传递链

标签: android

热门推荐