All Things Web Code Review News Qodana

通过静态分析缩短代码审查和项目规划时间

Read this post in other languages:

厌倦了没完没了的代码审查和调试时,您可能会开始思考,是否有方法可以自动执行繁琐的任务,而不会在以后的开发中产生适得其反的效果。 如果您或您的团队对此感兴趣,可以深入研究一下服务器端静态分析。 您将如何从在项目生命周期中添加另一个步骤中受益(特别是在智能 IDE 时代)? 您可以将哪些任务委托给静态分析工具? 请阅读这篇博文,找到这些问题的答案并了解更多内容!

自动执行代码审查

根据 2019 有效状态开发者调查,61.5% 的开发者每天花在编写代码上的时间不超过 4 小时。 增加非编码用时的任务之一是代码审查。 这个过程的主要目标是直接发现质量问题。 在许多项目中,质量意味着:

1) 完美的业务逻辑实现;

2) 与代码可维护性相关的元素:设计模式、命名策略、代码样式等。

如果这个过程为纯手动,那么审查者对这两个方面都应予以关注。 这很容易出错,也很耗时。 例如,尝试找出与正则表达式相关的代码中的缺陷:

这对您来说并不容易,但对静态分析工具来说,却是一项非常轻松的任务。 这只是一个例子。 您可以自动执行许多检查:未使用的 import、死代码、重复项、拼写问题、格式问题等,您可以选择任何规则。 例如,如果您在注释中使用 TODO,您可以自动检查它们是否包含对问题跟踪器的引用,就像部分 JetBrains 团队所做的那样。

编辑器中配置的那些检查将指导开发者,但此指导将成为服务器端静态分析的强制规则。 服务器端质量门将确保代码在进入下一阶段(如手动代码审查或部署到生产)之前满足特定标准。 作者和审查者在反馈循环中花费的时间将减少。 此外,您将获得一个用于证明和进一步分析的跟踪记录。

对外部贡献保持信心

即使所有团队成员都同样熟练、准确,并且对代码质量有共同的理解,代码审查仍然是一个良好做法。 即使是职业攀岩者也需要保护绳,不是吗? 如果您不了解贡献者的实际技能水平,保护绳就变得至关重要。 当您接受外部项目贡献,并且需要确保贡献者遵循您的指南时,正是这种情况。 外部贡献可以是对开源项目的拉取请求,也可以是您委托给分包商的任务,自动代码审查将执行日常检查,以便您可以专注于业务价值。

大幅缩短在项目规划上花费的时间

使用服务器端静态分析,您可以检查创建的代码并规划代码演化步骤。 假设您想要切换到该语言或框架的较新版本。 幸运的话,您只需更新依赖项,项目就可以启动并运行。 如果没那么幸运,更新依赖项后,IDE 会高亮显示大量需要更新的位置。

对于大型项目,变更的数量可能会非常庞大,您需要若干人手才能成功。 您将如何在他们之间分配工作? 静态分析平台可以构建报告,以便在人员之间分配工作并估算结果。 这适用于您的代码所需的任何重构。 例如,使用基于结构化搜索的检查,您可以评估所有需要注意的地方。 从技术上讲,这种分析可以在开发者的计算机上完成,但不能与其他人共享问题列表和跟踪进度。 

在您的项目生命周期中使用 Qodana 进行静态分析

JetBrains 的代码质量平台 Qodana 使您和您的团队能够利用静态分析工具的优势,同时与您最喜欢的 CI/CD 管道(TeamCity、GitLab、GitHub 等)集成。 下图说明了软件开发生命周期中使用的典型软件构建流程,以及如何将 Qodana 与此流程进行集成。

要开始使用 Qodana,请查看我们之前的博文来获取详细说明,或下载适合您的技术堆栈的组件版本:

访问 jetbrains.com.cn/qodana 了解详细信息。 如果您有任何反馈,我们将不胜感激,欢迎您提出任何想法! 请发送电子邮件至 qodana-support@jetbrains.com 或通过问题跟踪器与我们联系。

您的 Qodana 团队

英文博文原作者:

Sue

Kateryna Shlyakhovetska

Discover more

Qodana 和 IntelliJ IDEA:代码质量平台如何简化 IDE 的本地化

您有没有想过,如何在情人节之后继续坚持更健康的生活方式、不为小事操心、更聪明而不是更费力地工作? 心理学家说,将大目标分解成小步骤是坚持新年目标的最好方式。 这个建议也适合程序员的目标。 规划涉及代码重构的大型项目时,您应该查看所需更改的全貌并相应地调整。 这正是 IntelliJ 团队在需要将 IDE 的整个 UI 本地化为中文、日语和韩语时所做的。 IntelliJ 团队使用 JetBrains 的代码质量平台 Qodana 作为本地化流程的单一可信来源,比预期更快地完成了项目。 明智的规划、问责和监督促成了这一积极成果。 他们是这样做的。 免费试用 QODANA 挑战:隔离 13,000 个硬编码字符串并有效监控进度 为了简化将 UI 本地化为 3 种语言的过程,IntelliJ 团队需要从源代码中剥离所有可本地化的条目,将其放入单独的属性文件中以供翻译。 在超过 13,000 个字符串中,一些可本地化的字符串很容易被忽略,保留在代码中。 本地化 UI 时,硬编码字符串可能是最难处理的部分。 它们只有在软件本地化后才会出现,因此很难被找到。 举例来说,用户安装日语语言包后,UI 的某些部分仍将是英语。 因此,团队需要面对许多繁琐和重复的工作。 于是,本地化项目负责人开始寻找一种解决方案,用来: 通过持续检查硬编码字符串文字的代码库来自动执行大量工作。 将问题分配给负责修正