电子产业一站式赋能平台

PCB联盟网

搜索
查看: 115|回复: 0
收起左侧

给代码生成文件头部与函数注释

[复制链接]

282

主题

282

帖子

2477

积分

三级会员

Rank: 3Rank: 3

积分
2477
发表于 2024-8-24 14:17:00 | 显示全部楼层 |阅读模式
本章节主要介绍下如何自动生成文件头部与函数注释相关;学会本文档,将可以自动给你添加代码注释,并且有一个统一标准,不再那么凌乱,好好的工具配置一次就好好用它既可。
以下环境在大名鼎鼎的VSCode 下进行。
前言在写代码过程中,是否看到那些大厂的代码写的注释都比较规范和漂亮,曾经的自己还在那里CV。修改代码都会涉及创建文件创建新的函数,但在这过程中,如何去规范或者丝滑去写好这部分,其实在代码的世界里面只要你好好应用好工具,一切都变得简单,因为工具会Auto,在这个过程中,你只需要去修改一点点东西既可。插件1:koroFileHeader采用插件1的效果:
文件注释效果:

0d2u4knwnap6408657155.png

0d2u4knwnap6408657155.png

函数注释效果:

ozdkpn4hezi6408657255.png

ozdkpn4hezi6408657255.png



osb0wj22e1g6408657355.png

osb0wj22e1g6408657355.png

出现快捷键不能用的问题:
按下ctrl+shift+p,
1.修改文件头快捷键:搜索fileheader,选择右侧设置图标,就进入按键绑定页面。2.修改函数注释快捷键:搜索cursorTip,选择右侧设置图标,就进入按键绑定页面。
CommandKeybindingWhenSourcefileheaderCtrl+Alt+IeditorTextFocusUsercursorTipCtrl+Alt+TeditorTextFocusUser使用方法:Ctrl+Alt+I将会插入文件头部注释;Ctrl+Alt+T将会对当前鼠标函数位置所在函数进行函数注释;在文件头部"fileheader.configObj"到"files.exclude"settings 文件配置【配置还包含其他插件配置】:该配置文件路径:C:\Users\你的用户名\AppData\Roaming\Code\User\settings.json
  • {  "cmake.configureOnOpen": true,  "files.autoGuessEncoding": true,  "editor.formatOnType": true,  "[c]": {      "editor.defaultFormatter": "ms-vscode.cpptools"  },  "security.workspace.trust.untrustedFiles": "open",  "workbench.startupEditor": "none",  "redhat.telemetry.enabled": true,  "http.proxyAuthorization": null,  "cSpell.languageSettings": [],  "http.proxySupport": "on",  "editor.inlineSuggest.enabled": true,  "boot-java.rewrite.reconcile": true,  "todohighlight.defaultStyle": {
      },  "todohighlight.exclude": [
          "**/node_modules/**",      "**/bower_components/**",      "**/dist/**",      "**/build/**",      "**/.vscode/**",      "**/.github/**",      "**/_output/**",      "**/*.min.*",      "**/*.map",      "**/.next/**"  ],  "fileheader.configObj": {      "createFileTime": true,      "language": {          "languagetest": {              "head": "/$$",              "middle": " $ @",              "end": " $/",              "functionSymbol": {                  "head": "/** ",                  "middle": " * @",                  "end": " */"              },              "functionParams": "js"          }      },      "autoAdd": true,      "autoAddLine": 100,      "autoAlready": true,      "annotationStr": {          "head": "/*",          "middle": " * @",          "end": " */",          "use": false      },      "headInsertLine": {          "php": 2,          "sh": 2      },      "beforeAnnotation": {          "文件后缀": "该文件后缀的头部注释之前添加某些内容"      },      "afterAnnotation": {          "文件后缀": "该文件后缀的头部注释之后添加某些内容"      },      "specialOptions": {          "特殊字段": "自定义比如LastEditTime/LastEditors"      },      "switch": {          "newlineAddAnnotation": true      },      "supportAutoLanguage": [],      "prohibitAutoAdd": [          "json"      ],      "folderBlacklist": [          "node_modules",          "文件夹禁止自动添加头部注释"      ],      "prohibitItemAutoAdd": [          "项目的全称, 整个项目禁止自动添加头部注释, 可以使用快捷键添加"      ],      "moveCursor": true,      "dateFormat": "YYYY-MM-DD HH:mm:ss",      "atSymbol": [          "@",          "@"      ],      "atSymbolObj": {          "文件后缀": [              "头部注释@符号",              "函数注释@符号"          ]      },      "colon": [          ": ",          ": "      ],      "colonObj": {          "文件后缀": [              "头部注释冒号",              "函数注释冒号"          ]      },      "filePathColon": "路径分隔符替换",      "showErrorMessage": false,      "writeLog": false,      "wideSame": false,      "wideNum": 13,      "functionWideNum": 0,      "CheckFileChange": false,      "createHeader": false,      "useWorker": false,      "designAddHead": false,      "headDesignName": "random",      "headDesign": false,      "cursorModeInternalAll": {},      "openFunctionParamsCheck": true,      "functionParamsShape": [          "{",          "}"      ],      "functionBlankSpaceAll": {},      "functionTypeSymbol": "*",      "typeParamOrder": "type param",      "customHasHeadEnd": {},      "throttleTime": 10000,      "functionParamAddStr": "",      "NoMatchParams": "no show param"  },  "fileheader.cursorMode": {      "function        ": "",      "description        ": "",       "author        ": "git config user.name && git config user.email",         "param        ": "",       "return        ": "",  },  "fileheader.customMade": {      "FileName": "${file_name}",      "Description": "",      "Author": "git config user.name && git config user.email",      "Version": "v0.0.1",      "Date": "Do not edit",      "LastEditTime ": "Do not Edit",      "custom_string_obkoro1_copyright": "Copyright ${now_year} HywelStar, All Rights Reserved. ", // 版权声明 保留所有权利 自动替换年份      "custom_string_obkoro1_date": "Do not edit", // 版权时间},  "files.exclude": {      "**/*.o": true  },  "github.copilot.editor.enableAutoCompletions": true,  "STM32VSCodeExtension.projectCreator.executablePath": "f:\Program Files\STMicroelectronics\STM32Cube\STM32CubeMX\STM32CubeMX.exe",  "python.analysis.packageIndexDepths": [      {          "name": "sklearn",          "depth": 2      },      {          "name": "matplotlib",          "depth": 2      },      {          "name": "scipy",          "depth": 2      },      {          "name": "django",          "depth": 2      },      {          "name": "flask",          "depth": 2      },      {          "name": "fastapi",          "depth": 2      }  ],  "settingsSync.ignoredExtensions": [],  "cSpell.userWords": [      "Hywel"  ],  "remote.SSH.configFile": "G:\Remote_ssh\config",  "remote.SSH.showLoginTerminal": true,  "remote.SSH.remotePlatform": {      "192.168.17.104": "linux"  },"C_Cpp.intelliSenseEngine": "disabled","diffEditor.ignoreTrimWhitespace": false}插件2:Doxygen Documentation Generator效果文件头注释:

    cxqnf2pemxj6408657455.png

    cxqnf2pemxj6408657455.png

    效果函数投注释:

    rrrxosxqufc6408657555.png

    rrrxosxqufc6408657555.png



    otn4d5loxoc6408657655.png

    otn4d5loxoc6408657655.png

    setting.json 内容
    当前setting.json 为项目的setting,可以改到
    C:\Users\你的用户名\AppData\Roaming\Code\User\settings.json路径下。
  • {    "doxdocgen.file.copyrightTag": [        "Copyright (C) 2024-2034 HywelStar.",        "All rights reserved.",        "",            ],
        "doxdocgen.file.customTag": [        "@version         v0.1",        "",        "@revision history:",        "         {date} - Initial version."    ],
        "doxdocgen.file.fileTemplate": "@file          Filename without the absolute path",    "doxdocgen.generic.authorTag": "@author          HywelStar(hywelstar@163.com)",    "doxdocgen.generic.dateTemplate": "@date          {date}",    "doxdocgen.generic.briefTemplate": "@brief          Brief description",    "doxdocgen.generic.returnTemplate": "@return          Description of return value",    "doxdocgen.generic.paramTemplate": "@param          {param} in/out          Description of parameter",    "doxdocgen.generic.customTags": [        "@warning         Special notes such as non-reentrancy, blocking issues, etc.",        "@note         Significant modifications"    ],
        "doxdocgen.file.fileOrder": [        "copyright",        "", // New line        "file",        "brief",        "author",        "date",        "custom"    ],
        "doxdocgen.generic.order": [        "brief",        "param",        "return",        "custom"    ],    "C_Cpp.errorSquiggles": "enabled",    "files.associations": {        "*.def": "c"    }}
    总结对比本章节主要对对于使用vscode 平台使用文件头部和函数头部注释功能,选择上面任何一种都可以,不过笔者使用起来的感受的话,想要速度快一些可以采用第二种,对于第一种来说快捷键需要函数注释还是文件注释总是有些迟钝,但是第一种来说定制化和智能化会更高一些对时间修改都会有自动记录。对于团队合作看大家看中哪一种,方面后面代码一些规范化,采用同一种形态的注释也会更加完美一些。根据自身选择,简单就第二种,复杂化智能化就第一种。另外对于其他平台暂时还没有研究,对于老牌的source insight, eclipse 都有这样类似的设置方式。end

    一口Linux

    关注,回复【1024】海量Linux资料赠送
    精彩文章合集
    文章推荐
    ?【专辑】ARM?【专辑】粉丝问答?【专辑】所有原创?【专辑】linux入门?【专辑】计算机网络?【专辑】Linux驱动?【干货】嵌入式驱动工程师学习路线?【干货】Linux嵌入式所有知识点-思维导图
  • 回复

    使用道具 举报

    发表回复

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则


    联系客服 关注微信 下载APP 返回顶部 返回列表