0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看威廉希尔官方网站 视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

利用deepin-IDE的AI能力实现文件加密扩展

深度操作系统 来源:深度操作系统 2024-12-30 09:22 次阅读

经过多轮迭代,deepin 文件管理器(dde-file-manager)的扩展功能已经趋于稳定,看到越来越丰富的文管新功能,作为一名威廉希尔官方网站 爱好者,也想自己动手写个插件扩展一下文管的功能。
我选择的开发工具是 deepin-IDE,原因有两个:一是 deepin-IDE 本身集成了文管的插件模板,对研发者而言只需要通过引导创建模板代码,然后在上面修修改改即可,不用再去阅读大量的文管源码;还有一个原因是 deepin-IDE 已经支持了较多的 AI 能力,包括注释添加、代码翻译、修复bug、解释代码、代码审查、生成单元测试和生成提交信息,正好借此机会看看能带来多少的效率提升。

首先说下结论,有模板 + AI的助力,整个开发过程体验下来还是非常顺畅,让我仅用不到两个小时的时间就把功能加上,接下来就分享给大家完整的开发过程。

Part 1 准备工作

首先通过应用商店,下载最新版本的 deepin-IDE :

6b7d61a8-c36c-11ef-9310-92fbcf53809c.png

启动 deepin-IDE,首先看到的是最近访问页面,点击下图中的按钮,在弹出的引导界面选择文管插件,随后按照向导一步一步的完成配置。

6ba052bc-c36c-11ef-9310-92fbcf53809c.png

引导完成后在工程树可以看到插件模板的代码结构:

6baa8002-c36c-11ef-9310-92fbcf53809c.png

在这个模板里面有说明文档,按照指引将工程配置一遍,在编译后插件文件会自动安装到指定位置,文管检测到插件变化,提示用户进行更新:

6bbfde48-c36c-11ef-9310-92fbcf53809c.png

为了测试插件是否安装成功,打开文管并选中某个文件右键,已经可以看到新增的右键菜单:

6bd68a94-c36c-11ef-9310-92fbcf53809c.png

这些右键菜单都是插件模板已经实现的功能,我们要做的是修改这些代码,在这个过程中就可以体验 deepin-IDE 的 AI 辅助编程功能。
需要注意的是,如果想要体验完整的 AI 功能,还需要做一个准备工作,就是登陆 AI 插件关联的网站:在 IDE 界面的消息界面,会弹出 AI 插件登陆提示:

6be9a58e-c36c-11ef-9310-92fbcf53809c.png

点击登陆按钮,完成登陆后就可以使用全部的 AI 功能。到这里,所有的准备工作就算完成。

Part 2 解释功能

要新增加密功能,第一步应该在文管中添加右键菜单。找到对应的源文件,阅读代码并定位到如下的位置:

bool MyMenuPlugin::buildNormalMenu(DFMExtMenu *main, const std::string


¤tPath,


const std::string &focusPath, const


std::list&pathList,

bool onDesktop)

{

...

//通过代理创建 action,此 action 在堆区分配,不自行释放将内存泄露!

autorootAction{m_proxy->createAction()};rootAction->setText("角标管理");

//通过代理创建 menu,此 menu 在堆区分配,不自行释放将内存泄露!

auto menu { m_proxy->createMenu() };

//⼆级菜单在Hover中创建,以减少一级菜单显示的性能开销

rootAction->setMenu(menu);rootAction->registerHovered([this, pathList](DFMExtAction *action) {

if(!action->menu()->actions().empty())return;autofavoriteEmblemAct{m_proxy->createAction()};favoriteEmblemAct->setText("角标设置为favorite");favoriteEmblemAct->setIcon("emblem-favorite");favoriteEmblemAct->registerTriggered([this,pathList](DFMExtAction*,
bool) {

std::for_each(pathList.begin(), pathList.end(), [this](conststd::string &path) {setEmblemIcon(path, "emblem-favorite");

});

});

...
return true;

}

代码注释很详细,添加的方法也很简单,只需要自己创建一个菜单和 Action,通过接口注册进去就可以了。具体的逻辑是写在 Action 的回调里面处理,用⼾触发菜单时会自动执行。 以上对代码的理解是基于个人的经验,在这种对代码不是很熟悉的场景下,正好可以试试 AI 的解释功能。 选中这段代码,右键点击解释代码选项,得到如下的结果:

6bfb53ba-c36c-11ef-9310-92fbcf53809c.png

着重看红色方框里面的内容,其中功能描述部分还是比较准确的,和个人的理解相近,除此之外 AI 还把函数的参数都解释了一遍,这比自己阅读代码得到的信息更多。 不过这个功能还是存在槽点,后面罗列出来的具体步骤还是有些繁杂,不如“show me the code”来的更加直接。 但换个场景想想,假设我正在翻看其它语言的代码,或者涉及到算法、shader 代码,解释功能的优势就体现出来了,就像文言文里面的白话注释,可以不用,但不能没有。 所以啊,在当前 AI 功能眼花缭乱的背景下,只有在合适的场景、合适的需求下去使用,才会得到事半功倍的效果。

Part 3 智能问答

理解到代码的大概意思,接下来就是手搓代码的过程。 第一步将模板中已有的代码进行修改,比如去掉多余的Action,修改菜单名字等,让其符合我的最终需求,效果如下:

6c18e862-c36c-11ef-9310-92fbcf53809c.png

有了界面,接下来就是添加加密和解密的逻辑。 对于不怎么使用加密工具的研发者来说,并不知道使用什么加密工具以及如何什么样的参数。在这个场景下,相信大部分的小伙伴已经不假思索的打开 ChatGPT 进行问答操作了。 不过这次是在 deepin-IDE 里面,我直接展开 deepin-IDE 左侧的问答界面6c34115a-c36c-11ef-9310-92fbcf53809c.png进行查询,在进⾏了多番连续的问答后得到如下答案:  

6c3bc6e8-c36c-11ef-9310-92fbcf53809c.png

Part 4 代码补全

为了把加解密功能加进去,我在对应的类中添加了两个函数,分别用于加密和解密,然后开始输入代码,在敲完函数体回车后,就得到 deepin-IDE 的代码补全提示:

6c58707c-c36c-11ef-9310-92fbcf53809c.png

敲击快捷键 Ctrl+T 填入对应的代码,随后再次利用这个功能,便快速得到完整的函数代码:

6c6e2890-c36c-11ef-9310-92fbcf53809c.png

以同样的方法,我把代码解密的函数代码也补充完成。 体验下来,补全的代码解决了我大约 90% 的工作量,不过并没有完全符合功能需求,原来的文件还遗留在本地。 我在靠后的位置先写上注释,说明需要删除原来的文件,随后轻点回车,不待我反应过来,补全内容已经直接呈现:

6c8f9340-c36c-11ef-9310-92fbcf53809c.png

为了保持和之前一样的优雅,我愉快的按下了 Ctrl + T 快捷键。随后多次、重复的使用 AI 代码补全功能,将剩余的函数一一实现。 最后编译整个工程,然后随便找了个“README.md”文件试了试成果。这是文件里面原来的内容:

6cbaf756-c36c-11ef-9310-92fbcf53809c.png

接下来进行加密操作: 1、右键该文件,选择加密选项。 2、在当前目录随即出现了一个新文件,名字后面加上了“encrypted”后缀,之前的文件也被删除。 3、打开该文件,可以看到里面的内容已经被加密,无法正常阅读。

6cd2d6d2-c36c-11ef-9310-92fbcf53809c.png

如果仔细观察,还会发现文件图标的左下角多了一个爱心图标,表示这是一个加密文件。解密也是同样的操作,它会把文件名恢复为原来的名字,左下角的加密图标也会消失。

Part 5 单元测试

功能是完成了,但为了保证代码质量,单元测试也是不可缺少的一环。 在 deepin-IDE 里面也提供了这个功能,选中一段代码,让 AI 生成测试内容,看看效果如何:

6cf75b24-c36c-11ef-9310-92fbcf53809c.png

这个工程没有使用任何测试框架,但 AI 还是把测试用例的大体结构搭建好了,和大多数 AI 辅助功能一样,还是需要自己动手修改。不过粗略估计,该功能大致可以节省 50% 左右的工作量。

Part 6 准备工作

为了完成开发闭环,接下来就需要把代码提交到仓库。 在常规的提交方式下,我们会根据经验总结修改的内容,形成提交信息。 在 deepin-IDE 里面,可以直接根据修改内容生成提交信息,甚至把总结的依据也罗列出来。右键点击 CodeGeeX > 生成git commits,如下图所示:

6d1f8e32-c36c-11ef-9310-92fbcf53809c.png

随后在智能问答界面,会输出提交信息和提交依据:

6d2a5e5c-c36c-11ef-9310-92fbcf53809c.png

最后一句的总结可以说非常的准确,同时也节省了不少思考时间。

Part 7 审查代码

当然,如果害怕提交的 PR 被其他人暴力 Review,自己可以在本地进行预先审查。 具体可以通过 deepin-IDE自带的代码审查功能,方法还是通过选中代码和右键菜单触发,得到如下结果:

6d2a5e5c-c36c-11ef-9310-92fbcf53809c.png

这里我选取的是加密函数的代码,总计有仅有12行,但 AI 功能给出的代码审查建议竟然多达10条之多,我一度怀疑自己的编码质量怎会降到如此程度,不过细细看来,AI 还是审查得过于严苛了。 建议研发人员将其作为参考信息,提取有用部分进行自查即可。

Part 8 总结

deepin-IDE 中的 AI 能力在持续不断的完善。而在本次的使用过程中,也用到了 deepin-IDE 提供的插件模板功能,较为明显的降低了从头开始写文管插件的难度,随着后面各类系统工具的集成,deepin-IDE 在开发效率上的提升也会越来越明显。
最后,十分感谢社区用户Mozart的投稿,也欢迎大家踊跃投稿,分享你的新发现和新玩法。
GitHub:https://github.com/linuxdeepin/deepin-unioncode 官方网站:https://ide.deepin.org/zh

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • AI
    AI
    +关注

    关注

    87

    文章

    31028

    浏览量

    269383
  • 文件加密
    +关注

    关注

    0

    文章

    24

    浏览量

    6082

原文标题:利用 deepin-IDE 的 AI 能力,我实现了文件加密扩展

文章出处:【微信号:linux_deepin,微信公众号:深度操作系统】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    deepin操作系统介绍

    希望从自己的能力和对桌面操作系统的理解,能给 Linux 的用户与开发者更多的选择。我们也相信 deepin 能够得到更多用户的认可与喜爱,成为开源世界的最佳选择。  一、 deepin 操作系统 先说 Linux 操作系统,它
    的头像 发表于 12-23 09:08 385次阅读
    <b class='flag-5'>deepin</b>操作系统介绍

    deepin荣获2024年度开源社区奖

    近日,由中国科协科学威廉希尔官方网站 传播中心、中国计算机学会、中国通信学会和中国科学院软件研究所联合主办、CSDN 承办的 2024 年开源创新榜评选活动圆满落幕。经过严格的评选过程,deepin 荣获 2024 开源创新榜“年度开源社区奖”,这也是 deepin (深度) 社区连续
    的头像 发表于 12-20 15:13 276次阅读

    deepin社区落地开源生态发展合作倡议

    为共同推动做强做优做大创新操作系统生态,积极响应由 deepin(深度)、龙蜥(OpenAnolis)、开源欧拉(openEuler)、鸥栖(OpenCloudOS)及开放麒麟(openKylin
    的头像 发表于 12-17 09:35 210次阅读

    如何在虚拟机上安装deepin系统

    如果你想在 Windows、macOS 或 Linux 发行版上体验 deepin 系统,但又不想冒险破坏现在的电脑系统环境,通过虚拟机来安装则是一个理想的选择。
    的头像 发表于 12-05 14:43 276次阅读
    如何在虚拟机上安装<b class='flag-5'>deepin</b>系统

    deepin文件管理器问题解答

    deepin 文件管理器凭借其独特的设计赢得了用户的青睐,尽管如此,它在用户体验方面仍有改进的空间。因此,我们策划了这次文字采访,旨在深入探究其设计理念、用户面临的问题以及未来的发展规划。我们期望通过这次交流,为用户传递有价值的信息,并为产品团队提供一个展示和沟通的平台。
    的头像 发表于 12-05 14:32 170次阅读

    socket 加密通信的实现方式

    在网络通信中,数据的安全性至关重要。Socket 编程作为网络通信的基础,实现加密通信是保护数据不被窃取或篡改的重要手段。 1. SSL/TLS 加密 SSL(Secure Socket Layer
    的头像 发表于 11-12 14:18 450次阅读

    C加密算法的实现

    电子发烧友网站提供《C加密算法的实现.pdf》资料免费下载
    发表于 09-20 11:10 1次下载
    C<b class='flag-5'>加密</b>算法的<b class='flag-5'>实现</b>

    利用华企盾安全U盘实现居家办公文档的安全加密

    泄露的问题。 什么是安全U盘 安全U盘是一种新型的加密数据处理设备,也就是常说的USB存储设备,它是由北京华企盾科技责任有限公司开发的,可以使用它来储存和加密数据,通常使用它来保护重要的文件,比如电子表格
    的头像 发表于 05-21 11:20 394次阅读
    <b class='flag-5'>利用</b>华企盾安全U盘<b class='flag-5'>实现</b>居家办公文档的安全<b class='flag-5'>加密</b>

    华为云正式发布CodeArts IDE for Python

    近日,华为云正式发布CodeArts IDE for Python,这是一款内置华为自主创新的Python语言服务,提供智能编程、灵活调试能力的可扩展桌面开发工具,为华为云开发者提供卓越Python编码体验。
    的头像 发表于 05-08 14:58 509次阅读

    【操作指引】铁威马NAS加密文件夹创建和使用教程

    共享文件夹是一个网络存储空间。您可以建立数个共享文件夹来存放不同类别的数据,或提供给不同的用户或用户群组来存取文件。   一旦加密共享文件
    的头像 发表于 04-02 14:17 938次阅读
    【操作指引】铁威马NAS<b class='flag-5'>加密</b><b class='flag-5'>文件</b>夹创建和使用教程

    扩展包x-cube-ai实现SVM支持向量机吗?

    扩展包x-cube-ai实现SVM支持向量机嘛
    发表于 03-22 07:26

    防止AI大模型被黑客病毒入侵控制(原创)聆思大模型AI开发套件评测4

    在设计防止AI大模型被黑客病毒入侵时,需要考虑到复杂的加密和解密算法以及模型的实现细节,首先需要了解模型的结构和实现细节。 以下是我使用Python和TensorFlow 2.x
    发表于 03-19 11:18

    IBM积极推进Ceph扩展,以打造AI领域的底层数据存储基石

    BM正着手扩展Ceph的块和文件存储功能,希望将其定位为Storage Scale并行文件系统之下面向AI工作负载的后端数据存储。
    发表于 02-20 16:15 410次阅读

    M451如何加密下载hex文件呢?

    M451系列,如何加密下载hex文件呢?我查看了ICP工具,好像没看到有加密的地方,如下图:
    发表于 01-16 07:22

    应用方案:实时数据加密

    应用方案:实时数据加密 利用CPLD设计加密电路方便可行,能够较好地实现加密功能。AG32系列MCU产品,在芯片内部内置了CPLD逻辑,可以
    发表于 01-15 08:57