clang-tidy fix for cppcoreguidelines-pro-bounds-constant-array-index generates invalid code

未关闭
#9,237 0 条评论 0 个 reaction 已指派 0 人 在 GitHub 查看

还没有人认领这个 Issue。

评估

难度
4/5
预计耗时
3-5 天
新手友好度
35/100
Issue 类型
缺陷
描述清晰度
基本清楚
活跃度
停滞
技术栈
cpp
领域
tooling

调研方向

首先复现 issue 中的 clang-tidy 配置和 C++ 示例,然后将生成的 fix 与 LLVM issues 37858 和 55088 进行比较。跟踪 vscode-cpptools 中的代码分析 fix 路径;完成意味着所报告的数组索引案例不再生成无效代码,包括带有前置 #if/endif 的变体。

由索引模型根据 Issue 内容生成。

描述

bug external Feature: Code Analysis

With 1.10.1 (currently unreleased), using "C_Cpp.codeAnalysis.clangTidy.config": "{ Checks: 'cppcoreguidelines-pro-bounds-constant-array-index', CheckOptions: [{key: cppcoreguidelines-pro-bounds-constant-array-index.GslHeader, value: '<gsl/gsl.h>'}]}"

with code

#include <array>

int func(int i)
{
    std::array<int, 2> vvv;
    return vvv[i];
}

generates the incorrect code return gsl::at(v, i);.

It's already reported at https://github.com/llvm/llvm-project/issues/37858 .

Bug#2: There's another related bug at https://github.com/llvm/llvm-project/issues/55088 , when there's an #if/endif at the top of the file.

主要语言
TypeScript
星标
6.2k
派生
1.7k
平均合并
14 小时 46 分钟
30 天内合并 PR
61

贡献指南

打开贡献指南

从这里开始

  1. 先读完整个 Issue,再读项目的贡献指南。
  2. 在 Issue 下留言说明你要接手 —— 这能避免两个人做同样的事。
  3. Fork 仓库,在一个分支上完成修改。
  4. 提交 Pull Request,并在描述里引用这个 Issue 编号。

microsoft/vscode-cpptools 的其他 Issue

查看 microsoft/vscode-cpptools 的全部 Issue

相似的 Issue

更多 TypeScript Issue

把新 issue 发到你的邮箱

精选适合新手参与的 GitHub issue 摘要。