华为云用户手册

  • 多种构建类型 CMake工程一共有四种构建类型,分别是 Debug,MimSizeRel,Release,RelWithDebInfo。选择需要的构建类型,工程构建之后, 生成对应的目录。 Debug:禁用优化并包含调试信息。 Release:包括优化但没有调试信息。 MinRelSize:优化大小。没有调试信息。 RelWithDebInfo:优化速度并包含调试信息。 父主题: Cmake工程支持
  • 自动检测 CodeArts IDE会根据您所打开的文件来决定文档中使用的缩进。自动检测的缩进将覆盖默认的缩进设置。检测到的设置将显示在底部状态栏的右侧。 您可以通过单击状态栏中的缩进设置打开缩进命令列表,然后更改打开文件的默认缩进设置或在制表符和空格之间转换。 CodeArts IDE自动检测检查2、4、6或8空格的缩进。如果文件使用不同数量的空格,则可能无法正确检测缩进。例如,如果您需使用3个空格缩进,则您需关闭editor.detectIndentation选项,并将选项卡大小显式设置为3。 "editor.detectIndentation": false,"editor.tabSize": 3,
  • 简介 编写代码时,CodeArts IDE会根据预定义的验证规则自动在后台分析代码。CodeArts IDE可以发现各种问题,识别可能的错误、拼写问题等。这有助于您在运行代码之前检测和更正代码中的问题。对于许多问题,CodeArts IDE提供了快速修复功能,让您可以迅速修复它们。 警告和错误显示在CodeArts IDE用户界面的几个位置: 状态栏显示所有错误和警告的摘要。 “问题”视图列出了当前打开的文件中的所有问题。 打开文件时,所有错误和警告都将直接在代码编辑器中呈现,与文本内联,并在概述标尺中呈现。 父主题: 代码校验
  • 插件调试与运行 后端调试 在插件的 src/node/ 目录下存放的是插件的后端代码,后端代码运行在 nodejs 环境中,插件工程在创建的时候已经默认生成了一个后端文件 backend.ts,对于轻量级的插件,只需要在该文件中添加自己想要实现的业务功能即可,该文件包含了三个默认的方法 init()、run()、stop()。另外还默认添加了一个 doSomething 方法,这个方法仅仅是作为示例使用,开发者可以根据需要进行修改或删除。 这里我们简单介绍下init,run和stop方法: init 函数:作为该后端实例的初始化方法,可以在插件启动的时候进行一些初始化操作,写在该函数中的代码一定会先于 run 和其他函数被调用,这里需要注意的是,对于前端暴露给后端的函数不能在 init 函数中进行调用,也就是不能在 init 方法中执行 this.plugin.call 调用。 run 函数:作为后端实例的主逻辑函数,承担着业务功能入口的作用,在该函数中可以方便地调用 CodeArts IDE 的 API,比如 codearts.window.showInformationMessage(`hello world!`); 也可以调用前端暴露出来的函数,也就是可以在该方法中执行 this.plugin.call 调用。 stop 函数:将会在插件被停止前被调用,如有需要可以进行一些资源清理的操作。 添加断点:在backend.ts 的 run() 函数中添加一个断点。 打开调试窗口:按 F5 或者单击右上角调试工具栏中的开始调试按钮,打开【扩展开发宿主】窗口。 进入断点,进行调试。 前端调试 与插件的后端不同,前端的代码最终将被编译并运行于浏览器环境中,前端的代码存放于 src/browser 目录中,插件工程在创建的时候会默认生成两个前端源码文件 frontend.ts 和 dynamic-webview.ts。这两个文件的内容与后端 backend.ts 的结构非常相似,只不过运行的环境不同而已,这里就不再重复对这两个文件中 init()、run()、stop() 方法进行介绍。由于前端运行在浏览器环境中,代码调试将借助于浏览器自带的调试功能。如果需要自动重新编译前端代码,可以在终端中执行命令 npm run watch-browser,然后再运行调试。在启动调试后如果修改了代码,只需在调试窗口按 Ctrl+R 重新加载窗口即可看到修改后的效果。 前端调试前,需要先把 webpack.config.js 文件中的 devtool 配置为 'inline-source-map',然后在命令行执行 npm run prepare。 添加断点:在 frontend.ts 的 run() 函数中添加一个断点。 打开调试窗口:按 F5 或者单击右上角调试工具栏中的开始调试按钮,打开【扩展开发宿主】窗口。 打开插件注册的视图,进入断点,进行前端的调试,若无法进入断点,可以使用“Ctrl + Shift + I”打开“开发人员工具”,再“Ctrl + R”重新加载当前窗口。
  • 补全类型 代码补全可以提供补全推荐和项目的全局标识符。在代码推荐列表中,首先显示推荐的符号,然后是全局标识符(由Word图标显示)。 CodeArts IDE代码补全包括基于语法语义的补全、片段推荐补全和简单的基于单词的文本补全。SmartAssist套件补全推荐的代码会额外标记为图标。 图标 描述 Methods and Functions Variables Fields Type parameters Constants Classes Interfaces Structures Events Operators Modules Properties and Attributes Values and Enumerations References Keywords Files Folders Colors Unit Snippet prefixes Words SmartAssist suggestions 父主题: 代码补全
  • 代码重构操作 重构是通过改变现有程序结构而不改变其功能和用途来提高代码的可重用性和可维护性。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+.会显示可用的快速修复和重构列表。 父主题: C/C++代码编写
  • 验证导入 CodeArts IDE提供了几个导入验证规则,您可以根据需要配置这些规则。 通过执行以下任一操作打开Java Assist Settings对话框: 单击CodeArts IDE状态栏中的Java Smart Assist。 在命令面板中运行SmartAssist:Open Settings命令(“Ctrl+Shift+P”/“Ctrl Ctrl”)。 在搜索字段中键入import以快速找到导入验证规则。然后配置如下: 要启用或禁用规则,请使用其名称旁边的复选框。 要调整相应代码问题在代码编辑器中突出显示的方式,请在Severity列表中选择所需的严重性级别。 有关验证规则的更多详细信息,请参见代码校验。 父主题: 自动导入
  • 配置校验规则 您可以自定义应用于代码的验证规则集。 通过执行以下任一操作打开“Java助手设置”对话框。 单击CodeArts IDE状态栏中的“Java智能助手”。 在“命令选项板”中运行“SmartAssist: Open Settings”命令(“Ctrl+Shift+P”)。 使用搜索字段快速定位验证规则。然后配置如下: 要启用或禁用规则,请使用其名称旁边的复选框。 要调整相应代码问题在代码编辑器中突出显示的方式,请在“严重性”列表中选择所需的严重性级别。 有关配置Java项目的更多详细信息,请参见配置项目。 父主题: 代码校验
  • 测试 使用此Source Action为具有选定测试框架的生产类生成测试类。 有关测试Java代码的更多详细信息,请参阅调试。 在Create Test对话框中,提供测试类参数: Testing library:选择要使用的测试库。 Class name:提供测试类的名称,并根据选定的框架选择其超类。 Superclass:指定存储生成的测试类的包。 选中Generate @Before/Generate @After复选框,让CodeArts IDE为测试夹具生成注释和存根方法。 在Members区域中,选择要为其生成测试方法的方法。要查看所有方法,包括继承的方法,请Show inherited methods复选框。 父主题: 代码生成
  • 重构后 class OuterClass { String str = "test"; public void outermethod(){ InnerClass ic = new InnerClass(this); ic.print(); }}class InnerClass { private final OuterClass outerClass; public InnerClass(OuterClass outerClass) { this.outerClass = outerClass; } public void print() { System.out.println(outerClass.str); }}
  • 重构前 class OuterClass { String str = "test"; public void outermethod(){ InnerClass ic = new InnerClass(); ic.print(); } class InnerClass { public void print(){ System.out.println(str); } }}
  • 代码操作的键绑定 editor.action.codeAction命令允许您为特定代码操作配置键绑定。例如,此键绑定触发提取函数重构代码操作: { "key": "ctrl+shift+r ctrl+e", "command": "editor.action.codeAction", "args": { "kind": "refactor.extract.function" }} 代码操作类型由扩展使用增强的CodeActionProvided API指定。种类是分层的,因此"kind": "refactor" 将显示所有重构代码操作,而“ "kind": "refactor.extract.function"”将仅显示提取函数重构。 使用上述键绑定,如果只有单个“refactor.extract.function”代码操作可用,则将自动应用该代码操作。如果有多个提取函数代码操作可用,您可以从上下文菜单中选择所需的代码操作。 您还可以使用应用参数控制自动应用代码操作的方式和时间: { "key": "ctrl+shift+r ctrl+e", "command": "editor.action.codeAction", "args": { "kind": "refactor.extract.function", "apply": "first" }} “apply”的有效值: first - 始终自动应用第一个可用的代码操作。 ifSingle - 默认情况下。如果只有一个代码操作可用,则自动应用代码操作。否则,显示上下文菜单。 never - 始终显示代码操作上下文菜单,即使只有一个代码操作可用。 当代码操作键绑定配置为"preferred": true时,仅显示首选的快速修复和重构。首选的快速修复解决了基础错误,而首选的重构是最常见的重构选择。例如,虽然可能存在多个refactor.extract.const重构,但每个重构都提取到文件中的不同作用域,但首选的refactor.extract.constant重构项是提取到局部变量的重构。 此键绑定使用"preferred": true创建始终尝试将选定源代码提取到本地作用域中的常量的重构: { "key": "shift+ctrl+e", "command": "editor.action.codeAction", "args": { "kind": "refactor.extract.constant", "preferred": true, "apply": "ifSingle" }} 父主题: 重构
  • 简介 当您打开包含源代码文件的任意文件或文件夹时,CodeArts IDE仅提供基本的文本编辑功能。要获得完整的Java编码帮助,CodeArts IDE会自动通过分析文件内容并生成项目的元数据来初始化项目。所有项目的元数据都存储在项目根目录下的.jlsp文件夹中。 在CodeArts IDE中,您的Java项目的内容会显示在资源管理器视图中(“Ctrl+Shift+E”/“Alt+1”(IDEA键盘映射))中,该视图提供了常见的文件管理功能。 父主题: 使用Java项目
  • Maven设置 Maven home:请使用此字段选择捆绑的Maven版本(Maven 3)或者单击Browse按钮,手动定位您自己的Maven安装位置。 User settings file:在此字段中,指定包含Maven用户特定配置的文件。 Local repository:在此字段中,指定用户主目录下的本地目录的路径,该目录存储下载并包含临时生成工件。 Maven SDK:从此列表中,选择要与Maven一起使用的JDK:捆绑的JDK、项目级JDK或从系统变量(如JAVA_HOME)解析的JDK。 Work offline:如果选中,Maven将在脱机模式下工作。它不连接到远程存储库,只使用本地可用的资源。此选项对应于--offline命令行选项。 Print exception stack traces:如果选中,则生成异常堆栈跟踪。此选项对应于--errors命令行选项。 Use plugin registry:如果选中,则可以引用Maven的插件注册表。此选项对应于--no-plugin-registry命令行选项。 Execute goals recursively:如果选中,则将递归执行生成,包括嵌套项目。此选项对应于--non-recursive命令行选项。
  • Gradle设置 Gradle User Home:在此字段中,指定Gradle用户主目录的路径(默认为$USER_HOME/.gradle),用于存储全局配置属性和初始化脚本、缓存和日志文件。默认值基于GRADLE_USER_HOME环境变量的值提供。要修改它,您可以设置环境变量或单击“”按钮并手动定位所需的Gradle用户主目录。 Gradle SDK:从此列表中选择要与Gradle一起使用的JDK:捆绑的JDK、项目级别的JDK或从系统变量(如JAVA_HOME)解析的JDK。
  • 项目设置 在Project Settings页面,您可以提供Java SDK(JDK)的路径并配置项目的语言级别,该级别定义了代码编辑器提供的一组编码辅助功能(例如代码完成或错误突出显示)。 选定的语言级别将与项目生成配置文件同步。如果在设置中调整它,CodeArts IDE会相应地更新相应的值: 对于Gradle在build.gradle文件中,sourceCompatibility和targetCompatibility的值已经更新。 对于Maven在pom.xml文件中,Maven的source和target已经更新。 父主题: 配置项目
  • 自定义面包屑 导航栏的外观可以自定义。如果显示路径很长,或者只对文件路径或符号路径感兴趣,则可以通过breadcrumbs.filePath和breadcrumbs.symbolPath设置项来配置。两者都支持on、off和last,它们定义了您是否能看到路径或看到哪一部分的路径。默认情况下,导航痕迹在导航栏的左侧显示文件和符号图标,但您可以通过将breadcrumbs.icons设置为false来删除图标。 您可以通过breadcrumbs.symbolSortOrder设置"控制“导航路径”大纲视图中符号的排序方式。 支持的排序方式为: position:以文件位置顺序显示符号大纲(默认)。 name:以字母顺序显示符号大纲。 type:以符号类型显示符号大纲。
  • 重构后 package com.refactoring.source;public class Refactoring { public String testStr = "test"; public void DoSomeThing() { System.out.println(testStr); }}package com.refactoring.target;public class RefactoringCopy { public String testStr = "test"; public void DoSomeThing() { System.out.println(testStr); }}
  • 简介 要配置Java项目,先打开Java Assist Settings 对话框,您可以通过以下任意一种方式打开Java Assist Settings 对话框: 在命令面板中运行SmartAssist: Java Assist Settings命令(“Ctrl+Shift+P”/“Ctrl Ctrl”)来打开Java Assist Settings 对话框。 单击CodeArts IDE左下角Manage选项卡,选择Java Assist Settings,打开Java Assist Settings 对话框。 单击CodeArts IDE 右下角的Java Smart Assist,打开Java Assist Settings 对话框。 打开Java Assist Settings 对话框之后,在对话框中,使用搜索字段快速定位所需的设置。 父主题: 配置项目
  • 重构后 class ExtractParameter { public static void main(String[] args) { sayHello(); } private static void sayHello() { sayHello("Hello" + " " + "World!"); } private static void sayHello(String message) { System.out.println(message); }}
  • 重构前 public class MoveInstanceMethod { public static void main(String[] args) throws Exception { Car c = new Car(); System.out.println(c.getName(new MoveInstanceMethod())); }}class Car { String name = "Default Car"; String getName(MoveInstanceMethod anotherObject) { System.out.print(anotherObject.toString()); return this.name; }}
  • 重构后 class PullUp { public static void main(String[] args) { new InnerClass().print(); } private static class InnerClass extends AbstractClass { } private static abstract class AbstractClass { public String myField; public void print() { System.out.println("Hello World"); } }}
  • 重构前 class ExtractParameterObject { public static void main(String[] args) { System.out.println(generateText("Hello", "World!")); } private static String generateText(String hello, String world) { return hello.toUpperCase() + world.toUpperCase(); }}
  • 重构后 class ExtractField { private static String message; public ExtractField() { message = "Hello" + " " + "World!"; } public static void main(String[] args) { sayHello(); } private static void sayHello() { System.out.println(message); } }
  • 重构后 class ExtractParameter { public static void main(String[] args) { System.out.println(generateText(new TextContainer("Hello", "World!"))); } private static String generateText(TextContainer textContainer) { return textContainer.getHello().toUpperCase() + textContainer.getWorld().toUpperCase(); } private static class TextContainer { private final String hello; private final String world; private TextContainer(String hello, String world) { this.hello = hello; this.world = world; } public String getHello() { return hello; } public String getWorld() { return world; } }}
  • 重构后 public class MoveInstanceMethod { public static void main(String[] args) throws Exception { Car c = new Car(); System.out.println(new MoveInstanceMethod().getName(c)); } String getName(Car car) { System.out.print(toString()); return car.name; }}class Car { String name = "Default Car";}
  • 重构前 class PullUp { public static void main(String[] args) { new InnerClass().print(); } private static class InnerClass extends AbstractClass { public String myField; public void print() { System.out.println("Hello World"); } } private static abstract class AbstractClass { }}
  • 重构前 class UseInterface { public static void main(String[] args) { InnerClass innerClass = new InnerClass(); print(innerClass); } private static void print(InnerClass innerClass) { innerClass.print(); } private static class InnerClass implements InnerInterface { @Override public void print() { System.out.println("Hello World!"); } } private static interface InnerInterface{ void print(); }}
  • 重构后 class UseInterface { public static void main(String[] args) { InnerInterface innerInterface = new InnerClass(); print(innerInterface); } private static void print(InnerInterface innerInterface) { innerInterface.print(); } private static class InnerClass implements InnerInterface { @Override public void print() { System.out.println("Hello World!"); } } private static interface InnerInterface{ void print(); }}
  • 重构前 class ReplaceConstructor { public static void main(String[] args) { new InnerClass("Hello", "World").print(); } private static class InnerClass { private String message; public InnerClass(String hello, String world) { message = hello + ", " + world; } public void print() { System.out.println(message); } }}
共100000条
提示

您即将访问非华为云网站,请注意账号财产安全