对项目层次进行配置#

警告

接下来的内容都只对当前项目有效, 如果创建新的项目则需要重复配置. 因为每个项目都是且应该是独立的, 其配置自然不应该共享.

配置了的很多检查都只在编译生成时才会进行, 而 VSCode 是能在写代码的同时检查的. 这似乎有扩展解决了, 有需要的可以 扩展 里搜索 analysison save 之类的关键词找找; 我不以 Visual Studio 为主, 就不找了.

重新打开 Visual Studio 2022, 并打开那个空项目, 创建一个 cpp 文件.

更多的静态检查#

找到 解决方案资源管理器, 右键你所创建的项目, 选择最下方的选项 属性(R).

../../../_images/%E9%A1%B9%E7%9B%AE%E7%A4%BA%E6%84%8F%E5%9B%BE.png

项目示意图#

在弹出的窗口上方, 选择 所有配置所有平台, 接下来开始配置:

  • 常规: 将 C++ 语言标准 修改为 预览 - 最新 C++ 工作草案中的功能 (/std:c++latest), 毕竟 C++ 版本越新越复杂、使用越简单.

  • C/C++ ‣ 命令行: 在下方 其他选项 中输入以下内容: (诊断选项解释见 附录)

    /permissive- /W4 /w14242 /w14254 /w14263 /w14265 /w14287 /we4289 /w14296 /w14311 /w14545 /w14546 /w14547 /w14549 /w14555 /w14619 /w14640 /w14826 /w14905 /w14906 /w14928
    
  • Code Analysis ‣ 常规: 全部选 .

  • Code Analysis ‣ Microsoft: 下拉选择 <选择多个规则集...>, 勾选全部并点击 另存为, 然后选择另存为的那个规则集即可.

    ../../../_images/Microsoft_%E8%A7%84%E5%88%99%E9%9B%86.png

    Microsoft 规则集#

  • Code Analysis ‣ Clang-Tidy: 在 要启用或禁用的检查 中输入以下内容: (具体细节见 Clang-Tidy 诊断选项列表)

    *,-abseil*,-altera*,-fuchsia*,-llvmlib*,-llvm-qualified-auto,-zircon*,-google-readability-todo,-misc-unused-alias-decls,-modernize-use-trailing-return-type,-readability-braces-around-statements,-readability-implicit-bool-conversion,-readability-qualified-auto,-hicpp-braces-around-statements
    

此后, 每当编译生成时, 都会进行检查.

启用地址擦除系统 (AddressSanitizer)#

找到 解决方案资源管理器, 右键你所创建的项目, 选择最下方的选项 属性(R).

在弹出的窗口上方, 选择 所有配置所有平台, 接下来开始配置:

  • C/C++ ‣ 常规: 将 启动地址擦除系统 修改为 是 (/fsanitize=address).

  • C/C++ ‣ 代码生成: 将 基本运行时检查 修改为 默认值.

  • 链接器 ‣ 常规: 将 启动增量链接 修改为 否 (/INCREMENTAL:NO).

关闭窗口, 点击主窗口上方的 工具(T) ‣ 选项(O)..., 在弹出的窗口中将 调试 ‣ .NET/C++ 热重载 中所有选项取消勾选.