IDEA代码文件的版权(copyright)信息配置
1. 快速创建Copyright 版权配置文件
1.1 创建copyright文件
依次点击 File > Settings… > Editor > Copyright > 点击 “+” 号或 “Add profile”***,弹出创建 Copyright Profile 操作窗口,在***文本栏中输入版权配置文件的名称,文件名可自定义。
1.2 添加版权信息
在 *Copyright text(may contain Velocity templates)*文本框中根据自身需求写入版权信息(如下),并点击 Apply 进行应用。
1.3 设置并使用创建好的版权文件
退回至 Settings 中的 Copyright,在 Default project copyright 选项框中***选中刚刚创建好的版本文件***,点击 Apply 进行应用。
1.4 使用方法
在新创建文件时,无需手动编辑,IDE会自动生成版本信息。
2. 为所有新建项目自动配置版权信息
2.1 默认路径
通过“步骤1 快速创建Copyright 版权配置文件” 的操作则完成 CopyRight Profile 版权文件的创建,并在当前项目中生效。但是在创建新的项目时,会发现新建的项目中并没有已经创建好的版权文件,打开设置查看也发现确实没有可用文件。
为了一劳永逸,可以将已存在的版权文件进行导入。此文件可以是别人发送过来的,也可以使用之前自行创建好的。默认的保存路径为:项目根路径.idea\copyright\xxxx.xml
要导入已存在的copyright版权文件,依次点击 File > New Projects Settings > Settings for New Projects… 进入全局配置,在这里进行的配置会对新建项目生效。
之后同样进入了Settings设置框,依次点击 Editor > Copyright > Import 的箭头图标,弹出选择copyright文件的操作窗口,根据路径选择即可。
选择对应的xml即可。
3. 自定义版权信息模板
通过添加自定义快捷模板cprt,可以在未添加版权声明的文件头以手动输入缩略语的方式快捷配置版权信息。
3.1 新建模板分组
依次点击进入 File > Settings… > Editor > Live Templates,点击右侧 “+” 号并在弹出选项中选择 “Template Group…”,用以新建自定义的模板分组,取名随意,建议见名知义。
【若已经存在自定义模板分组,可直接进入第2步骤】
3.2 创建cprt模板
选中已创建好的自定义模板分组,点击右侧 “+” 号***并在弹出选项中***选择 “Live Template”。
3.3 填充自定义模板信息
新建模板后,需要配置模板相关信息。模板中各项参数以及作用如下:
- Abbreviation 缩略语:在此处填入触发缩略语,在Java文件中可以通过缩略语触发版权模板;
- Description 描述:对当前模板的描述,为可选项;
- Template Text 模板内容:版权信息模板的展示内容,根据需要来填写;
- Edit variables 变量编辑:若模板内容中填入的信息中带有变量,可以通过该设置项对变量进行格式化、赋值等操作;
- Expand with 手动触发按键:默认为 Tab 键,可保持默认,也可以自定义;
- Define 自定义作用域:可以选择 Everywhere ,也可以选择自定义的模块,比如此处选择 Java 模块中的 Declaration。
此处在自定义的版权模板内容框中填入的信息如下:
/*
* Copyright © 2023 All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
* Redistributions of source code must retain the above copyright notice,
* this list of conditions and the following disclaimer.
* Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
* Neither the name of the developer nor the names of its
* contributors may be used to endorse or promote products derived from
* this software without specific prior written permission.
* Author CavanLiu
*/
在 Edit variables 变量赋值这一块,使用的是 date(“yyyy”) 函数返回值;默认值则填写了今年的字符串。【Edit variables 以及 Expression 函数的补充说明见第四节】
3.4 使用方式
在未添加版权信息的类头部输入缩略语(如此处的 cprt)则可生成版权信息。在新建工程中,无需额外设置,即可使用缩略语快速生成版权信息。
4. 一键更新copyright作用范围
Expression 函数、参数的意义解析清单如下:
函数 | 参数 | 描述 |
annotated(“annotation qname”) | 使用驻留在指定位置的注释创建类型符号。例如,请参见迭代组中的活动模板。 |
anonymousSuper() | 为Kotlin对象表达式建议一个超类型。 |
arrayVariable() | 建议当前作用域中适用的所有数组变量。例如,请参见迭代组中的活动模板。 |
blockCommentEnd | 返回在当前语言上下文中指示块注释结束的字符。 |
blockCommentStart | 返回在当前语言上下文中指示块注释开始的字符。 |
camelCase(String) | 将字符串转换为camelCase。例如,camelCase(my-text-file)、camelCase(my text file)和camelCase(my_text_file)都返回myTextFile。 |
capitalize(String) | 将参数的第一个字母大写。 |
capitalizeAndUnderscore(sCamelCaseName) | 将作为参数传递的CamelCase名称的所有字母大写,并在各部分之间插入下划线。例如,大写和下划线(FooBar)返回FOO_BAR。 |
castToLeftSideType() | 将右侧表达式转换为左侧表达式类型。在迭代组中,它使用一个模板来生成raw类型和泛型集合。 |
className() | 返回当前类的名称(展开模板的类)。 |
classNameComplete() | 这个表达式替代了变量位置上的类名补全。 |
clipboard() | 返回系统剪贴板的内容。 |
commentEnd() | 返回指示当前语言上下文中注释结尾的字符。如果行注释是用当前语言定义的,则返回值为空。 |
commentStart() | 返回指示当前语言上下文中注释开头的字符。如果行注释是用当前语言定义的,则它们的开始指示符更好。 |
complete() | 在变量的位置调用代码完成。 |
completeSmart() | 在变量的位置调用智能类型完成。 |
componentTypeOf() | 返回数组的组件类型。有关示例,请参见迭代组和其他组中的活动模板。 |
concat(expressions…) | 返回作为参数传递给函数的所有字符串的串联。 |
currentPackage() | 返回当前包名称。 |
date(sDate) | 如果没有参数,则以默认系统格式返回当前日期。 |
decapitalize(sName) | 将参数的第一个字母替换为相应的小写字母。 |
descendantClassEnum() | 返回指定为字符串参数的类的子级。 |
enum(sCompletionString1,sCompletionString2,…) | 返回在扩展模板时建议完成的逗号分隔字符串列表。 |
escapeString(sEscapeString) | 转义指定为参数的字符串。 |
expectedType() | 返回模板扩展到的表达式的预期类型。如果模板在赋值的右部分、返回后等展开,则很有意义。 |
fileName() | 返回当前文件的名称及其扩展名。 |
fileNameWithoutExtension() | 返回不带扩展名的当前文件的名称。 |
firstWord(sFirstWord) | 返回作为参数传递的字符串的第一个字。 |
groovyScript(“groovy code”, arg1) | 返回具有指定代码的groovy脚本。可以将groovyscript()函数与多个参数一起使用。第一个参数是所执行脚本的文本或包含脚本的文件的路径。下一个参数绑定到脚本中可用的_1、_2、_3、…_n变量。此外,脚本中还提供了_editor变量。此变量绑定到当前编辑器。 |
guessElementType () | 猜测java.util.collection中存储的元素类型。为了猜测,intellij想法试图找到元素添加到容器或从容器中提取的位置。 |
iterableComponentType() | 返回可iterable组件的类型,如数组或集合。 |
iterableVariable() | 返回可迭代的变量的名称。 |
JsArrayVariable() | 返回当前javascript数组的名称。 |
jsClassName() | 返回当前javascript类的名称。 |
jsComponentTypeOf() | 返回当前javascript组件的类型。 |
jsDefineParameter | 基于模块的名称,返回参数fromdefine([“module”]、function(<parameter_in_question>>))。 |
jsMethodName() | 返回当前javascript方法的名称。 |
jsQualifiedClassName() | 返回当前javascript类的完整名称。 |
jsSuggestIndexName() | 返回最常用的索引变量的建议名称:i、j、k等。当前作用域中尚未使用的名称将首先显示。 |
jsSuggestVariableName() | 根据引用变量命名规则的代码样式设置,基于变量类型和初始值设定项表达式返回变量的建议名称。例如,如果它是一个在迭代中保存元素的变量,那么intellij-idea会猜测最合理的名称,并考虑到被迭代的容器的名称。 |
jsSuggestDefaultVariableKind(Boolean) | 布尔参数确定当前上下文中是否允许常量。如果未指定参数,则允许使用常量。当模板展开时,将显示一个下拉列表,其中包含typescript和es6的var、let和const选项,以及早期javascript版本的一个var选项。 |
jsSuggestImportedEntityName() | 根据文件名,将’import*类型的import语句的名称建议为i t e m itemitemfrom“m o d u l e modulemodule”`或’importi t e m itemitemfrom“m o d u l e modulemodule”。 |
lineCommentStart | 返回在当前语言上下文中指示行注释开头的字符。 |
lineNumber() | 返回当前行号。 |
lowercaseAndDash(String) | 将camelcase字符串转换为小写,并插入n个破折号作为分隔符。例如,LowerCaseandDash(MyExampleName)返回我的示例名称。 |
methodName() | 返回展开模板的方法的名称。 |
methodParameters() | 返回展开模板的方法的参数列表。 |
methodReturnType() | 返回当前方法返回的值的类型(模板在其中展开)。 |
qualifiedClassName() | 返回当前类的完全限定名(在其中展开模板)。 |
rightSideType() | 用右侧表达式的类型声明左侧变量。在迭代组中,它使用一个模板来生成原始类型和泛型集合。 |
snakeCase(String) | 将字符串转换为蛇形大小写。例如,snakecase(foo bar)返回foo_bar。 |
spaceSeparated(String) | 将字符串转换为小写并插入空格作为分隔符。例如,spaceseparated(foo bar)返回foo bar。 |
substringBefore(String,Delimiter) | 删除指定分隔符后的扩展名并仅返回文件名。这有助于测试文件名(例如,substringbefore(f i l e n a m e filenamefilename,“.”)返回component test.js中的组件测试。 |
subtypes(sType) | 返回作为参数传递的类型的子类型。 |
suggestFirstVariableName(sFirstVariableName) | 不代表真的,假的,这个,超级的。 |
suggestIndexName() | 建议使用最常用的索引变量的名称:i、j、k等(第一个不在当前范围内使用的变量)。 |
suggestVariableName() | 根据引用变量命名规则的代码样式设置,基于变量类型及其初始值设定项表达式建议变量的名称。 |
例如,如果它是一个在迭代中保存元素的变量,那么intellij-idea会猜测最合理的名称,并考虑到要迭代的容器的名称。 | |
time(sSystemTime) | 以指定格式返回当前系统时间。 |
typeOfVariable(VAR) | 返回作为参数传递的变量的类型。 |
underscoresToCamelCase(String) | 用作为参数传递的字符串中的camelcase字母替换下划线。例如,underlinestocamelcase(foo_bar)返回foo bar。 |
underscoresToSpaces(sParameterWithUnderscores) | 用作为参数传递的字符串中的空格替换下划线。例如,underlinestospaces(foo_bar)返回foo bar。 |
user() | 返回当前用户的名称。 |
variableOfType() | 建议可以分配给作为参数传递的类型的所有变量,例如,VababeLoFype(“java. U.L.Vector”)。如果传递一个空字符串(“”)作为参数,那么函数将建议所有变量,而不管其类型如何。 |