CodeQL 文档

算术运算假设一年有 365 天

ID: cpp/leap-year/adding-365-days-per-year
Kind: problem
Security severity: 
Severity: warning
Precision: medium
Tags:
   - leap-year
   - correctness
Query suites:
   - cpp-security-and-quality.qls

单击查看 CodeQL 存储库中的查询

公历(现已成为国际通用的民用历法)的闰年规则是:凡是能被 4 整除的年份都是闰年,但能被 100 整除的年份除外,这些世纪年份只有在能被 400 整除时才是闰年。

当软件(以任何语言编写)在编写时未考虑闰年逻辑,或计算闰年的逻辑有误时,就会出现闰年错误,这通常会导致结果不正确。

这些错误的影响可能从几乎不可察觉的错误(例如日期错误)到影响受影响系统可靠性、可用性甚至安全性的严重错误不等。

在对表示日期的变量执行算术运算时,必须考虑闰年。不能假设一年有 365 天。

建议

确定所述时间跨度是否包含闰日,然后使用正确的天数进行计算。或者,使用已经包含正确闰年逻辑的既定库例程。

参考资料

  • ©GitHub, Inc.
  • 条款
  • 隐私