华为云开发工具 CodeArts IDE for C/C++ 开发使用指南

简介
CodeArts IDE 是一个集成开发环境(IDE),它提供了开发语言和调试服务。本文主要介绍 CodeArts IDE for C/C++的基本功能。
1.下载安装
CodeArts IDE for C/C++ 已开放公测,下载获取免费体验
2.新建 C/C++工程
CodeArts IDE for C/C++ 提供了创建 C 或 C++工程的能力,可参考以下步骤进行创建:
1. 点击顶部菜单 File -> New -> Project...
2. 选择 C/C++
3. 填写表单并点击创建按钮
4. 等待工程创建完成并打开项目
3.C/C++代码编写
3.1 编码基础操作
CodeArts IDE for C/C++ 包含了内置的语法着色,定义预览,跳转定义,类继承关系图,调用关系图等一些编码基础功能。
语法着色 - 该功能可对函数,类型,局部变量,全部变量,宏,枚举,成员变量等上色。

跳转定义 - Ctrl+点击或者 F12 跳转到定义,或者使用 Ctrl+Alt+点击会打开定义到旁边。

定义预览 - 当光标移至符号处,则会有符号定义的悬停预览,也可以用 alt+F12 的快捷键进行文件内的符号预览。

查找所有引用 - 当光标点击或者选择到需要查找的符号,右键菜单->查找所有引用或者使用快捷键 Shift+Alt+F12 会打开定义在页面左侧。

调用关系图 - 当光标点击或选中需要调用关系图的函数时,右键菜单->调用关系图,或可以使用快捷键 Shift+Alt+H 调出。在关系图中,也可以点击需要查看的函数并导航到该函数,同时也能够查看子类和基类。

符号大纲 - 左侧工具->右上角三个点->大纲即可打开符号大纲,或者使用快捷键 Ctrl+Shift+B 打开工具栏。打开大纲后,双击函数即可到达函数定义的位置,并且当前符号大纲可跟随光标移动(此功能需要在大纲菜单栏中打开跟随光标选项)。

3.2 代码编写操作
CodeArts IDE for C/C++ 包含了内置的符号重命名,提取重构,代码补全/提示,实时语法检查等一些高级代码编写功能。
符号重命名(Rename symbol)
最基础的重构之一,但是变量或方法名字的可读性非常重要。在光标选中某个变量或方法后,右键单击以调出编辑器上下文菜单并且选择重命名符号或直接按 F2,来重命名整个 C/C++ 项目中所有用到该命名的地方。

提取重构(Extraction refactoring)
CodeArts IDE for C/C++ 支持将字段,方法和参数提取到新类中,根据提取的内容会提供不同的重构类型。
可用的 C/C++ 重构类型包括:
提取函数/方法(Extract method)- 将选定的语句或表达式提取到文件中的新方法或新函数。

在选择提取方法(Extract method)重构后,输入提取的的方法/函数的名称。
提取表达式到变量(Extract subexpression to variable)- 将选定的表达式提取为文件中的新变量。

代码补全/提示(Code Completion/Hinting)
CodeArts IDE for C/C++ 代码补全包含了各种代码编辑功能,包括:代码完成,快速信息,成员列表以及参数信息。当您输入字符时,代码补全若知道可能的补全选项,则会自动弹出成员列表。如果您继续输入字符,成员列表(变量,方法等)将被过滤为仅包含您输入字符的成员。您可通过光标点击或者按 Enter 或 Tab 键插入选定的成员名称。该功能会提供各种提示信息帮助您更加方便快速的编辑代码。

全局符号搜索(Global Symbol Search)
Ctrl+T 导出搜索框,输入需要查找的符号,页面会显示出当前文件夹所有包含此符号的文件,点击即可跳转。或者按向上或向下选择并按 Enter 导航到您想要的位置。

实时检查编译错误(该功能依赖 compile_commands.json 文件)
实时检查编译错误是解决编码错误的建议编辑,包括自动补全,实时语法检查等。
当编译错误时,会在错误处出现波浪线。可将光标移动或点击到 C/C++的代码错误上时,会显示黄色灯泡,表示可以使用快速修复。点击灯泡或按 Ctrl+。会显示可用的快速修复和重构列表。

Compile_commands.json 管理功能
Compiler 模式功能全面,但需要 compile_commands.json 文件编译数据库才能正常工作,可使用三种方式获取该文件。
使用内置 CMake Build Tool 插件(推荐)。构建 CMake 项目,会自动生成 cmake-build-debug/compile_commands.json 文件, 并且插件会自动将该文件导入到 .arts 文件夹。
使用 CMake 生成。 如果当前工程是 CMake 工程,可以通过添加参数-DCMAKE_EXPORT_COMPILE_COMMANDS=1 生成 compile_commands.json,并通过帮助->显示所有命令->Huawei C/C++:导入编译数据库文件命令导入。
使用 Huawei C/C++ 提供的 Generate 命令。可通过帮助->显示所有命令->Huawei C/C++:生成编译数据库文件,并选择存放源文件的文件夹,该方法分析头文件生成对应的编译数据库。
同时 Huawei C/C++也支持以下功能:
通过命令或 API 导入 compile_commands.json 文件(帮助->显示所有命令->Huawei C/C++:导入编译数据库文件)
合并多个 compile_commands.json 文件.
移除 compile_command.json 文件中重复的命令.
导入时为 clangd 提供额外的参数设置.
索引更新命令
同步工程索引(帮助->显示所有命令->Huawei C/C++:同步工程索引)
同步文件夹索引(资源管理器右键菜单->Huawei C/C++:同步文件夹索引)
同步文件索引(资源管理器右键菜单->Huawei C/C++:同步当前文件索引)
重置工程索引(帮助->显示所有命令->Huawei C/C++:重建全项目索引)
编辑源文件的编译选项并刷新索引(右键菜单->编辑编译参数)
以上命令和功能在 Compiler 模式或 Hybrid 模式均有效。
3.3 代码重构操作
重构是通过改变现有程序结构而不改变其功能和用途来提高代码的可重用性和可维护性。CodeArts IDE 支持重构操作,提供了多种重要的重构类型,来改变编辑器中的代码库。CodeArts IDE for C/C++ 内置了对 C/C++ 重构的支持,在本专题中,我们将展示 C/C++ 语言服务的重构支持。
定义构造函数(Define constructor)
在每次创建类时,可以自动定义类的构造函数,并且初始化成员。当点击或选中类名时,可以点击左侧黄色灯泡选择定义构造函数。

根据声明顺序排序函数(Sort functions to declarations)
根据头文件中的声明顺序,排序当前定义函数/方法的顺序。当点击或选中当前函数/方法定义时,重构选项可用。

将定义添加到实现文件(Add definition to implementation file)
将头文件的定义添加到实现文件中。当点击或选中当前函数/方法时,重构选项可用。

交换 if 分支(Swap if branches)
若当前条件只有 if 和 else 分支,选中代码片段后,选择交换 if 分支(Swap if branches),可自动交换 if 和 else 分支。

内联变量(Inline variable)
该功能可以用相应的值替换所有引用。假设计算值总是产生相同的结果。选中需要替换的内容,重构选项可用。

内联函数(Inline function)
该功能尝试使用适当的代码内联所有函数用法。它只能处理简单的功能,不支持内联方法、函数模板、主函数和在系统头文件中声明的函数。该功能可以内联所有函数引用。

生成 getter 和 setter(Generate getter and setter)
通过为其生成 getter 和 setter(Generate getter and setter)来封装选定的类属性。同时也可以选择只生成 getter(Generate getter)或者生成 setter(Generate setter)选项。

声明隐式成员(Declare implicit members)
此选项会将类的隐式成员在类中声明,当选中类名时,重构选项可用。

填充 switch 语句(Populate switch)
该功能可以自动填充 switch 语句。选中任意 switch 字段,并且点击黄色灯泡,选择填充 switch 语句。

移除 namespace(Remove using namespace)
移除 namespace 功能,会自动移除所有使用到的 namespace。当光标点击或选中 namesapace 关键字时,重构选项可用。

移动函数体到声明处(Move function body to out-of-line)
将函数/方法定义移动到它声明的位置。

在内部添加定义(Add definition in-place)
在当前函数/方法并且在类内部生成函数定义。当光标移动到函数/方法时,点击黄色灯泡,重构选项可用。

在外部添加定义(Add definition out-of-place)
在类外部生成当前函数/方法的函数定义。当光标移动到函数/方法时,点击黄色灯泡,重构选项可用。

展开宏(Expand macro)
在页面上添加展开宏(Expand macro),以便在可扩展/可折叠的部分提供内容。

展开 auto(Expand auto type)
展开 auto type 所隐藏的变量类型。

函数定义外移(Move function body to declaration)
该功能会将函数/方法的定义移动到声明的位置。

函数定义内移(Move function body to out-of-line)
该功能会将函数/方法的定义移动到对应的文件中。

转为原始字符串(Convert to raw string)
此方法可以将转义后的字符串转换为原始的字符串。当点击或选择了当前字符串,点击黄色灯泡,重构选项可用。

快速修复(Quick fixes)
快速修复是解决简单编码错误的建议编辑,包括自动补全,实时语法检查等。
当光标移动或点击到 C/C++的代码错误上时,会显示黄色灯泡,表示可以使用快速修复。点击灯泡或按 Ctrl+.会显示可用的快速修复和重构列表。
评论