头图

静态代码分析是指在不实际运行代码的情况下扫描代码以发现潜在问题。IntelliJ IDEA中的检查可以在您编译项目之前检测到其中的潜在问题。IDE 可以高亮显示各种问题、定位死代码、发现可能的Bug和拼写问题,并改善整体代码结构。

本系列博文将介绍IntelliJ IDEA中代码分析的几种方式,以帮助您查找并修正代码中的问题。接下来,一起来了解IDE如何帮助您在处理代码时预防问题。

查找并修正代码中的问题

当您在IntelliJ IDEA中编写代码时,IDE会提醒您代码中需要注意的区域并为您高亮显示。下面来看一些示例。

如果您的代码无法编译,IntelliJ IDEA会在不需要您先编译的情况下通知您。例如,下面的代码将无法编译,因为 FileReader 可能会抛出 FileNotFoundException,它是一个需要在方法中声明的受检异常。您会看到这段代码被高亮显示,当您悬停在上方时,IntelliJ IDEA会告诉您问题出在哪里。此外,它还会通过在方法签名中添加异常为您提供如何修正的建议。


未处理的异常

IntelliJ IDEA 还会在代码冗余时告知您。在下面的示例中,new File 以灰色显示。这是因为它是冗余的,可被替换为文件名。


冗余代码

快速查看代码中的问题

如上面所见,IntelliJ IDEA 会高亮显示代码中的潜在问题。如果您想详细了解这些问题,可以将光标移动到编辑器中高亮显示的代码上,将鼠标悬停在右侧装订区域中的错误条纹上,或者点击左侧的灯泡图标。

编辑器窗格右上角的 Inspection(检查)微件将显示当前文件中的问题数量及其严重性。您可以点击 Inspection(检查)微件打开问题列表,这些问题随后会显示在 Problems(问题)工具窗口的 File(文件)标签页中。

Inspection(检查)微件
Inspection(检查)微件

问题自动修正

IntelliJ IDEA 为这些检查提供快速修复,以帮助您实时修正代码。使用 ⌥⏎ (macOS) 或 Alt+Enter (Windows/Linux) 调用 Show Context Actions(显示上下文操作)并从列表中选择所需的操作以将其应用于代码。

如果代码中存在多个错误和警告,可以使用 F2 导航到下一个问题,或者使用 Shift+F2 导航到上一个问题。这样,您可以逐一修正每个问题。
修正问题

改进代码质量

即使代码中没有问题,IntelliJ IDEA 仍然可能会提供一些关于如何改进代码的建议。使用 Show Context Actions(显示上下文操作)(macOS 上为 ⌥⏎,Windows/Linux 上为 Alt+Enter)将建议应用于您的代码。例如,您可以尝试新的惯用法,例如使用 forEach 代替 for 循环,或使用 stream 代替 while 循环,甚至使用 try-with-resources 语句代替亲自关闭 BufferedReader。
建议
建议

修正整个文件中出现的所有特定问题

如果同一问题在同一文件中多次出现,您无需逐一修正!IntelliJ IDEA 还可以修正文件中多个位置的特定问题。使用 Show Context Actions(显示上下文操作)(macOS 上为 ⌥⏎,Windows/Linux 上为 Alt+Enter)时,点击建议右侧的三个点,将该建议应用于整个文件。
修正文件中的所有问题
修正文件中的所有问题

结论

IntelliJ IDEA 可以通过在您编写代码时高亮显示需要额外关注的代码来帮助您预防问题,并帮助您找到当前代码中可以改进的地方。

IntelliJ IDEA 还可以帮助您解决整个项目中的问题,而不仅仅是您当前正在处理的文件。

本博文英文原作者:Marit van Dijk

关于 IntelliJ IDEA

JetBrains 的旗舰 IDE IntelliJ IDEA 专为高效的 JVM 开发而设计。凭借对语言和技术的深入了解以及符合人体工程学的用户界面,IntelliJ IDEA 使开发成为愉悦的体验!
免费的开源 IntelliJ IDEA 社区版和 IntelliJIDEA Edu 也可以用于学习和教学编程。
咨询JetBrains授权代理-龙智,进一步了解&试用 IntelliJ IDEA:

官网:www.shdsd.com
电话:400-666-7732
邮箱:marketing@shdsd.com


龙智DevSecOps
6 声望3 粉丝

分享DevSecOps解决方案最新动态,帮助您学习与使用Atlassian, Perforce, Mend(原Whitesource), Cloudbees, TESSY, Jama Software及龙智自研产品,实现软件研发的高度协同与自动化,提高交付效率与质量,并确保...