SOAR的IDE插件——您的贴身DBA保镖

Posted 小米运维

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SOAR的IDE插件——您的贴身DBA保镖相关的知识,希望对你有一定的参考价值。


SOAR的IDE插件——您的贴身DBA保镖

本文将介绍SOAR插件的基本实现以及现在已经实现的插件的安装与使用。

上篇文章回顾:

SOAR的IDE插件——您的贴身DBA保镖


SOAR(SQL Optimizer And Rewriter)是小米近期开源的SQL智能优化改写工具,开源第一周就取得了2000+星的成绩。我们开发SOAR的目的并不仅仅希望对DBA能够提供帮助,也希望能够协助广大的SQL开发者更容易的写出高质量的SQL。SOAR借鉴了其他SQLint[1]的思路,也提供了三种编辑器插件,可以用来集成到Vim,Sublime Text,VS Code等代码编辑器中。

SOAR的IDE插件——您的贴身DBA保镖
关于lint功能
SOAR的IDE插件——您的贴身DBA保镖

将report-type指定为lint时,SOAR会将评审内容以SQLint的样形输出。为了便于展示,lint模式下只保留了文件名、行号、建议类型和建议摘要等少数信息。下面是一个简单的例子。

$ cat file.sql select * from test $ soar -report-type lint -query file.sql file.sql:1:CLA.001 最外层SELECT未指定WHERE条件 file.sql:1:COL.001 不建议使用SELECT * 类型查询

SOAR的IDE插件——您的贴身DBA保镖
Vim插件
SOAR的IDE插件——您的贴身DBA保镖

Vim插件我们选择了在知名的Syntastic[2]插件基础上进行增补,这就要求用户首先安装Syntastic插件,它的安装方法在官方文档[3]中有详细描述,这里不再过多赘述。让我们来直接看看要怎样配置SOAR生效。

  • 确保soar二进制文件在可执行文件查找路径$PATH下

  • 确保soar二进制文件具有可执行权限,chmod a+x soar

  • 将源码中的doc/example/soar.vim文件拷贝至${SyntasticInstalledPath}/syntax_checkers/sql目录下,例如笔者使用bundle来管理Vim插件,于是将soar.vim文件拷贝至~/.vim/bundle/pristine/syntastic/syntax_checkers/sql目录

  • 修改${SyntasticInstalledPath}/plugin/syntastic/registry.vim注册文件,增加sql类型文件的检查工具,如'sql':['soar','sqlint']

  • 更新Vim配置~/.vimrc,允许Syntastic默认弹窗

  • set statusline+=%#warningmsg#
    set statusline+=%{SyntasticStatuslineFlag()}
    set statusline+=%*
    
    let g:syntastic_always_populate_loc_list = 1
    let g:syntastic_auto_loc_list = 1
    let g:syntastic_check_on_open = 1
    let g:syntastic_check_on_wq = 0

    一切顺利的话使用Vim打开一个文件每次保存时您就能看到SOAR给出的建议了。

SOAR的IDE插件——您的贴身DBA保镖


SOAR的IDE插件——您的贴身DBA保镖
Sublime Text3插件
SOAR的IDE插件——您的贴身DBA保镖

与Vim插件的思路相同,在Sublime Text3中,我们选择在SublimeLinter[4]的基础上进行拓展。由于代码刚刚开源,SublimeLinter-soar[5]PackageControlChannel相关Pull Request[6]尚未被合并完成,所以目前暂时不能通过Sublime Text3自带的PackageControl进行安装。

虽然不能使用简便的方式进行安装,但是如果您想立刻体验SOAR的Sublime Text3插件,可以按照下列方式手动进行安装:

  • 确保soar二进制文件具有可执行权限,chmod a+x soar

  • 根据官方文档[7]安装SublimeLinter

  • 打开Sublime Text3的插件相关目录:Preferences -> Browse Packages…

  • 在该目录下载代码

  • git clone https://github.com/liipx/SublimeLinter-soar.git

  • 配置个人相关参数:点击 Preferences -> PackageSettings -> SublimeLinter -> Settings,将下列内容修改后加入到个人配置中

  • // SublimeLinter Settings - User{        
      "linters": {  "soar": {           "soar_path":"your_soar_path"
            },
        },
    }

重新启动Sublim Text3后,打开一个SQL文件就看到SOAR给出的建议了。

SOAR的IDE插件——您的贴身DBA保镖


SOAR的IDE插件——您的贴身DBA保镖
 VS Code插件
SOAR的IDE插件——您的贴身DBA保镖

VS Code的插件功能十分强大,对于语言类的功能拓展,微软采用了一种称为Language Server Protocol(LSP)的实现方式。这种协议标准化了语言工具和代码编辑器之间的通信方式,感兴趣的同学可以通过官方文档[8]进行更深入的了解。

SOAR的IDE插件——您的贴身DBA保镖

SOAR的VS Code插件目前在Github[9]上管理,尚未发布到微软的应用市场,无法直接在微软官方网页上点击安装。想尝鲜且拥有TypeScript及VS Code插件开发相关经验的同学可以通过以下方式来手动安装体验该插件。其他同学可以静静等待微软应用市场审批通过即可享受一键安装的便利了。

  • 确保soar二进制文件具有可执行权限,chmod a+x soar

  • 确保soar二进制文件在可执行文件查找路径$PATH下

  • 找到VS Code插件安装路径,Mac/Linux用户一般为${HOME}/.vscode/extensions,Windows用户一般为%USERPROFILE%\.vscode\extensions

  • 进入该路径下载代码

  • git clone https://github.com/liipx/vscode-extension-soar

  • 参考项目README[10]编译Client与Server目录下的TypeScript程序

  • 重启VS Code,打开一个SQL文件查看是否生效

SOAR的IDE插件——您的贴身DBA保镖


SOAR的IDE插件——您的贴身DBA保镖
总结
SOAR的IDE插件——您的贴身DBA保镖

SOAR并不仅仅是为DBA准备的工具,我们希望SOAR能够从SQL的全部生命周期来帮助提升代码质量。无论屏幕前的你是DBA还是软件开发者,我们相信SOAR都能够对您SQL的开发体验带来极大地提升。


参考

[1]:https://github.com/purcell/sqlint

[2]:https://github.com/vim-syntastic/syntastic

[3]:https://github.com/vim-syntastic/syntastic#installation

[4]:https://github.com/SublimeLinter/SublimeLinter

[5]:https://github.com/liipx/SublimeLinter-soar

[6]:https://github.com/SublimeLinter/package_control_channel/pull/77

[7]:http://sublimelinter.readthedocs.org/en/latest/installation.html

[8]:https://code.visualstudio.com/docs/extensions/example-language-server

[9]:https://github.com/liipx/vscode-extension-soar

[10]:https://github.com/XiaoMi/soar/blob/master/README.md


活动报名


ACMUG & CRUG 2018 技术沙龙全国巡演

11月10日    武汉


SOAR的IDE插件——您的贴身DBA保镖

随着ACMUG & CRUG活动在上海、厦门、深圳、珠海、成都、杭州、南京等七个城市成功举办,11月,ACMUG & CRUG迎来技术沙龙全国巡演第八站 -- 武汉站。这是史上第一次ACMUG & CRUG到武汉举办技术沙龙活动,是武汉的小伙伴们期待已久的技术盛宴。届时小米云平台DBA的SOAR核心研发工程师也会到场哦,不要错过这次SOAR技术分享的机会。

面向人群:DBA、运维、开发、mysql用户、Redis用户等


具体日程安排及报名渠道请识别下方小程序:

识别小程序   报名活动   畅谈技术   赢取好礼


以上是关于SOAR的IDE插件——您的贴身DBA保镖的主要内容,如果未能解决你的问题,请参考以下文章

有哪些sql优化工具

IDEA插件系列(55):WakaTime插件——自动生成编程项目中的指标见解和时间跟踪

巧用SOAR提升SQL代码质量

将vscode打造成无敌的IDE初步探索vscode,解放生产力

SBT 插件仅适用于您的本地机器

将vscode打造成无敌的IDE添加自定义的snippet