如何预防常见的 Java 错误
成为更高效的 Java 开发人员
Java (Oracle Corporation) 全球拥有 900 万开发人员*,是世界上最流行的编程语言之一。许多应用程序框架都是基于 Java 构建的,因为它是一种非常通用的语言,可以在许多支持 Java 运行时环境 (JRE) 的不同设备上运行程序,而 JRE 正是所有 Java 程序的运行环境。由开发人员主导的社区非常活跃,为新程序员提供的深入支持也促成了其日益增长的普及度。
由于 Java 问世已久,社区花费了多年时间来制定标准、工具、编码模式,并减少开发人员反复遇到的常见错误。所有这些由社区主导的举措都有一个共同目标——帮助开发人员在利用 Java 开发应用程序时尽可能提高效率。但在应用最佳实践或模式时,责任在于开发人员自身。由于对良好实践的执行标准各不相同,且社区内部观点分歧较大,因此很难形成统一的编码实践方法。开发人员往往求助于在线社区,但这有时会无意中导致他们获得不安全的编码解决方案。
为了帮助开发人员针对常见的 Java 编码问题实施安全解决方案,我们创建了 Sensei——这是一款 IntelliJ 插件,旨在根据您或您的组织在专业环境中定义的方案(或规则)来纠正不良编码模式。Sensei 使开发人员能够一键识别并纠正常见的 Java 错误(陷阱)。
继续阅读,了解 Sensei 如何通过解决一些常见的 Java 编码错误来提高开发人员的生产力。
一个让开发人员倍感挫败的反复出现的错误
这些常见错误的一个例子是对包装器值进行错误的相等性检查。应使用 equals 方法而不是引用比较运算符 (==) 来比较装箱后的基本类型值,以防止出现意外结果。
例如,对 -128 到 127 范围内的 Integer 值使用引用比较运算符(通常)其表现与 equals 方法相同。然而,如果我们对该范围之外的值执行相同的比较,结果就会不同。这是因为 Java 为上述范围的 Integer 值维护了一个常量池。使用 equals 方法将始终产生预期的结果,因此这是比较的正确方式。
在此示例中,我们错误地使用了运算符 (==) 来检查相等性。
其结果如下:
true
false
false
true
正确的比较方式是使用 equals 方法。
此时输出结果为:
true
false
true
false
这一广为人知的最佳实践由来已久,但在遗留代码中却常被错误地实现,往往在最不合时宜的时候引发问题。因此,我们创建了各种方案(或规则),利用 Sensei 帮助您在本地识别此类不良编码模式,并实现一键修复。
Sensei 是一款高度可定制的 IDE 插件,可在您编写代码时扫描并修复不良代码。它内置了数百种可下载的代码转换和迁移方案(规则),并支持您自行创建。借助 Sensei,开发人员可以在编写代码时即时修复不良模式,从而更快地交付高质量代码,并最终在团队和项目中实现统一、标准的编码方式。
Sensei 如何修复常见的 Java 问题
由于 Sensei 允许您创建自己的方案,我们编写了一个方案来纠正上述错误。
在此示例中,我们要查找在装箱基本类型中使用比较运算符 (==) 的位置。
Sensei 方案如下(YAML 格式):
上述方案可以在您输入代码时、在整个文件、配置范围内,甚至在整个代码库中搜索反复出现的不良模式。一旦发现该模式,下一步自然是能够立即修复它,而无需在线搜索。Sensei 使您能够创建修复程序,按指定方式添加、编辑或删除代码。您甚至可以根据需要提供多种修复方案,让开发人员选择最合适的一种。
在我们的示例中,我们希望使用 equals 方法重写比较逻辑,而不是使用 (==) 运算符。
可用的修复方案描述如下:
工作原理:

轻松实现标准编码指南
Java Gotchas Cookbook 包含 22 种方案,可帮助您避免常见错误,保持代码整洁安全。它能检测到对各种 Java 语言特性和 API(如对象相等性、异常处理、正则表达式和集合)的不正确或不安全使用。通过采用 Sensei 和此手册,您可以从一开始就编写更好的代码,甚至可以创建适合您团队、项目或组织的专属方案。
这只是 Sensei 用于标准化项目众多方式中的一种。您可以随时留意在代码审查或日常编码中经常遇到的反模式或某些手动代码转换。如果您有一套开发人员经常忽略的编码指南,可以将这些指南转换为方案,使开发人员能够自信地应用经批准的代码转换。
立即安装 Sensei 并启用 Java Gotchas Cookbook,获得高效的开发体验。 https://sensei.securecodewarrior.com/cookbooks/scw:java
*2021 年,开发者国家状况报告,https://www.developernation.net/developer-reports/de20
在 AI 驱动的开发成果发布前实现有效治理
评估 AI 辅助风险,在提交代码时强制执行安全编码策略,并加速整个软件开发生命周期的安全交付。
探索更多博客
获取有关安全编码、人工智能治理和软件风险管理的专家内容。
%252520%252520(3).avif)
Supercharged Security Awareness: How Tournaments are Inspiring Developers at Erste Group
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Suspendisse varius enim in eros elementum tristique. Duis cursus, mi quis viverra ornare, eros dolor interdum nulla, ut commodo diam libero vitae erat. Aenean faucibus nibh et justo cursus id rutrum lorem imperdiet. Nunc ut sem vitae risus tristique posuere.

Security as culture: How Blue Prism cultivates world-class secure developers
Learn how Blue Prism, the global leader in intelligent automation for the enterprise, used Secure Code Warrior's agile learning platform to create a security-first culture with their developers, achieve their business goals, and ship secure code at speed
在产品发布前确保 AI 驱动的开发安全
洞察开发风险,执行安全策略,并在整个软件开发生命周期中预防漏洞。



.avif)