00:00
那我们继续来解决我们so纳在这儿来做代码分析出现的这一块问题,他请让我们提供我们这个项目呢编译后的这个代码,然后呢,而且要用这个属性来指定它的这个位置,所以们现在呢就来改这一块,这一块的修改,其实我们完全可以参照我们之前的这个视例项目,我们有一块东西呢,都没有粘完,来看这个示例项目的pop文件,在这个pop文件里边呢,它其实就配置了这两个so呢,首先呢,它配了一个这个夹口,这个东西呢,是一个代码覆盖率的快速报告,我们一会儿可以用它,还有一个sna gro的banaries,就是二进制文件,这个其实就是我们用这个sona Java都行,然后呢,我们可以把这两个我们这个配置我先复制过来,先复制到我们的这个项目,我们的这个项目古力ma啊,这个最大的这个po沫里边,复制到我们最大的泡沫里边,我们来也给他加上这两个属性,而且我们现在呢,是要编译所有的,但一加上以后呢。
01:01
它我们的这一块啥,So纳加口这一块呢,是报错的,我们先不用管,然后呢,我们再来复制看下边除了这一块呢,我们来编译用的这个插件,在这儿呢,我们还指定了加口的这个版本,然后呢,也在这儿指定了索纳的这个版本,所以大家呢也可以来指一下,不止的话,我们现在默认sona呢是最新版,应该是三点七点几,我们之前在这儿应该见到过,我们在这儿呢,肯定用的是sona最新版,行,我们就不翻这个了,这个太慢了,那么现在呢,就直接把我们要用的这个插件我也复制过来,所以我们把这两个基本的复制过来,我们再来运行就行了。好,那现在呢,给我们这个项目里边复制了我们的这个加扣插件,它能帮我们生成一个代码的覆盖率测试报告,然后呢,还有一个我们索纳的这个插件,我们使用3.6这个零版本兼容。那这一块我们编写完了以后呢,那接下来我们就可以来测试一下,首先将我们所有的这个配置我们可以来提交,因为我们要拉取最新的代码内容,我们要测试好,现在把这个代码呢提交过来,然后呢我们重新来拉取测试一下,但在这个测试呢时候还有一个问题,就是我们桑纳要能分析我们的这些代码,那这个代码呢,一定得有编译后的这个代码,所以我们得要让它编译,编译了以后我们这个sona呢才能分析,所以来到我们的这一块的金克S配置文件里边,我们把这一块关掉,我们以前的这个金克S呢,它写的这个不完全,我们来到金克S的这个配置里边,在金克S里边来看到下边在这儿呢,要进行代码质量分析,那分析之前我们就得先来进行编译,所以呢,我们在这要做的第一步就是来编译,我看来写一个SSSH,然后呢我们使用me,然后呢clean style,我们相当于清理并编译我们整个。
02:54
项目当然清理编译期间呢,我们再来写一个杠d me点一个test skip,我们让他呢,跳过我们me的这个测试,等于true。
03:06
然后这一块呢,注意我用的是clean install,然然我们这个编译呢,你用clean compare就行,然后我现在这个install,它的这个作用呢,还有一个就是我们后来如果我们使用参数化构建,我只构建这个getway网关的话,那网关要去me仓库里边找,它的这个基本依赖是common,这个common呢就得在man仓库里边,所以呢,我一个in install先把所有的东西都装到门仓库里边,方便我们以后其他项目要找他就能找到,所以我们现在呢使用了一个clean install,然后呢,并且跳过测试好,我们现在呢,把这一块改完以后,我再来点击确定,我现在相当于我的这个配置文件改了,你的总po文件里边,我指定了S纳代码分析的这些属性。而且呢,我们这个bary target classes,那就是分析我们每一个项目,这个最终编译的target里边的那些目录里边的东西,好这块呢,写上加上了我们这个加口,加口的这个整个覆盖率报告,这个覆盖率报告呢,全部下边都是配置好的,我们直接来用就行,这一块我们都做好了以后呢,我们再来修改金克斯的这个配置文件,在金克S的这个配置文件里边来加上,在我们做所有事儿之前,一定要把我们的项目先来编译一下,好我们可以SH打印一个,我们呢就来说正在编译我们这个项目,正在正在咱们这个完整那么这个编译项目,所以这个完整编译项目,我们可以让它拉取完代码以后来做这个事儿也没问题,那我就把这一块的编译sona呢,就关心它sona这一块的东西,我们将编译呢,全部拉来,我们放到上边来,正在构建这一块。
04:55
款好,我们正在编译,我们把这个SH拉上来拉取完代码以后呢,我们就会编译我们的整个项目,然后我来点一个确定,我们现在再来运行一下我们这个流水线测试一下,而且我们只要以前运行过,现在我们第二次运行我们流水线里边的这些插件什么的下载过呢,它就不用下载了,那再来点一个运行,这次应该能快一点,现在上名我们暂时用不到,随便来说一个,我来点击确定好,那现在这个流水线呢,启动,我们现在来看我们这个流水线报告的状态,来稍等一下。
05:29
好,我们这个流水线呢,先运行起来了,来查看一下日志,日志的第一位是拉取代码,我们这个代码呢,只要拉取成功,接下来就会进行编译,那编译完了以后呢,我们扫码,扫码代码质量要分析,那我们看拉取代码完了以后,我们在这好像出问题,在这打印没问题,然后呢在这编译,编译呢说我们这一块呢,它提示我们这个mvn not found,就是没这个命令没找到,诶没找到的原因很简单,来到我们的这一块,我们还是来到流水线,你们来看我们的这个流水线,你如果想要用me命令,那你就必须在我们的这个容器里边,门的这个容器里边你运行才行,所以呢,我们要运行这个门稳命令,我们先来上我们的门稳容器,好,我们这在门稳容器里边来运行这个SH这一块命令,把这个呢复制过来走,这时我们把这一块呢,现在改造成这个样子,好,我们现在来点击确定好,我们这个流水线修改了以。
06:30
后我们再来运行一下我们这个流水线,来看一下现在的效果,走这个提示呢,队列中我们来点进来,接下来我们来看它的图形化界面,看一下它最终的运行效果。好我们现在还是来查看日志,这个日志呢,首先第一步是拉取代码,那我们就来等他拉取代码。只要这个代码拉取完了以后,接下来我们就会给它在me的容器里边编译一下我们这个me项目,好,这是第一处呢,我们就结束了拉取代码,我们来看下边剩下的。然后呢,我们看这个拉取代码呢,现在又报了一个错误。
07:04
这个错误呢,说我们还是这个下边,下边呢说me clean令in调这个me呢,清空编译项目这一块呢,开始来编译了,他我们这一块,我们这有一个咱们写错误的说不认识的这个标签叫什么,So呢,加口我们的这个report pass,那就是我们这一块呢,标签写错,们来看到我们这一块的标签,好那么这个标签呢,不对,那肯定不能这么写,这是我们这里边的所有属性,我们来看我们的这个架构之类的,是我们的所有定义的当前项目的属性,所以们一定呢写到我们的properties这个属性里边,Properties里边是我们定义的这两个属性,好,我们把这两个修改了以后,接下来PWD代表我们当前工作目录哈,这一块呢我们就不管了,然后接下来我们直接来提交就行,我们现在把我们的这个po文件修改完以后,我们再来做一个提交提交。我们把这一块的属性放好了以后,那我们远程只要提交到代码仓库,那么下一次呢,还会拉取新的代码,我们再来执行这个,所以呢,我们下接下来要做的事情就是那这一块刚才的运行失败了,来到我们这一块,我们继续来运行,来刷新,刷新我们来点击运行,我们现在再来运行一下我们这个,然后呢,我们这个仓库随便来写一个项目名,点我们现在这个运行中来点进来,来等它的整个初始化好,我们现在呢,看到这个潘拉我们这个流水线呢,准备好了,然后接下来他又给我们来拉取代码,执行这些步骤,我们就来稍等一下,那么这些步骤呢,能不能执行成功,来了我们这块日志,这个日志呢,先是拉取代码,那这个拉取代码我们看到像是成功了,我们在这儿呢,要不断刷新它,下边的阶段就会出来,那拉取代码成功以后,那接下来我们要做的就是其他事情,你们看又报错了,然后来到我们这个拉取代码里边,然后这是我们的正在镜像仓库打印没问题,然后可令好那。
08:57
接下来编译我们的这个项目,这个项目呢,诶它其实已经分析好我们这个项目的整个安装依赖了,然后再来下边,再在下边呢,它就整个编译这个编译complete error,诶我们这个编译呢,出错了,出错的原因我们来看下边的提示,提示呢它说是这个的,然后在编译我们这个common项目,我们看这是鼓励ma common在编译我们common项目的这些Java代码的时候,它不支持我们这个DEMO,这相当于我们这个泛型的这个运算符,说明这个代码呢是1.5,让我们升级到JAVA7或者更高,那说明它这个默认编译我们这个Java项目用的是1.5,但是实际上我们自个儿在这来我们编译JDK的时候,我们肯定用的1.8,而且呢,大家注意我的整个全项目里边,我这都有个profile是1.8,这1.8的原因是因为我把me的全局配置文件我调让它默认编辑项目都是1.8,我来给大家看一下我的me的配置文件,H盘H。
09:57
版里边我们有一个David soft,我们这里边有一个me,我们me的全局配置文件在这,我在全局配置文件里边呢,写过一处配置,这处配置我们来一直往下翻,有一处叫我们的这个pros,我们来找一下,诶就是这个pros我指定了JDK1.8,我是用这个指定了,而且默认呢是激活状态,只不过这在我的me配置文件里边,但是我们现在已上线,我们使用金克S1编译以后,我们所有东西肯定在我们当前这个me的容器里边,那me用的这个配置我们就得改,那怎么改呢?那就是用我们之前的这个技术,我们在我们的鼓励mail里边准备一个全局的me配置文件,诶,给它指定好镜像,并且指定好用JDK1.8来进行编译,那完了以后呢,我们让他编译的时候,使用我们这个门的全局配置就行了,好,那现在呢,把这个再来提交一下,推送一下。
10:54
好,那现在呢,推送到我们的。马云,这个仓库里边,然后我们来修改我们这个流水线,来稍等一下,那我们接下来这个流水线的修改呢,我们就来到我们流水线这一块,我们来重新修改一下我们的这个流水线,好,我来点击编辑金file,然我们在这me clean in style,诶我们想要给它清空并安装的时候,别用它默认的门配置,诶我们下边以前用索纳的时候指定了一个GS,相当于我们这个门的全局配置,那我们就用这个让他呢去。
11:26
阿里云下载镜像,包括呢,让他使用我们的这个JDK1.8编译,我们所有的me配置,我们都可以调整放在这儿让他来使用,好,现在我来点一个确定,这个确定点好了以后,我们这个金克file改好,那最后再来运行一看看我们这次能不能成功,这次应该就没问题,来点一个运行,来输一个版本,我来点一个确定,好现在我们来进行第13次构建,这前几次呢,我们都是一个一个,我们来可以来试验一下,我们就是来证明整个将我们整个流水线的语法慢慢的大家就会了,我们现在来等待它整个队列的初始化。
12:05
好,那现在流水线呢,准备成功,准备成功,我们来看它的几个步骤,那第一步首先拉取代码来刷新一下,看它的这个日志有没有变化,来稍等好拉取代码呢,我们看到这一块应该是没问题了,然后呢,我们再来刷新,看我们接下来还有没有其他什么步骤,我点一个拉取代码,好那就下边了,下边我们看main clean install,诶我们这个清空,并且我们这个安装到仓库,然后呢,接下来它决定了我们要用的这个整个顺序,然后它接下来就整个编译清空,安装到仓库,如果你以前运行过,那你就不用去我们的整个me阿里云那一块来下载镜像这一块,就很顺利的进行编译,如果你没运行过,我们就挨个还会要下载镜像这一块呢,时间就会非常长,那大家呢就慢慢等一会儿,那我呢,就之前提前已经让他们把这个镜像呢都下好就行了,那就不用带大家再这么死等了,好我们来等待下边,下边我们看到呢这一块我们将所有的项目全部编译。
13:05
成功了没问题,然后来到我们这个sona的代码质量分析,质量分析呢,我们来看第一个好,接下来看第二个,那sona的这个代码质量分析,然后走下边,下边的这一块整个流程好,那现在呢,So纳相当于分析每一个仓库的代码质量,鼓励mail,我们这个相当于这个是我们的库存管理系统的,我们再来看下边肯定还有其他系统的。好,还有我们购物车的,它扫描购物车的代码,然后呢,再来扫描其他系统的代码,我们一直往下翻,好接下来我们来看这块是啥代码,诶,这是人文fast,那我们是后台管理系统的代码,那他在这扫描好,扫描以后呢,我们再来看下边最后这些,好,这是我们商品系统的代码,它又扫描,那么再来稍等一下,那再来稍等呢,现在就应该来扫到别的其他代码,好这块只要全部准备都OK,以后好这一块呢,就waiting for,等待我们这个sona的代码质量分析,那么现在这个页面呢,应该是崩溃了,我们来刷新一下,好好,我们现在看到这个sona代码质量分析,这个运行成功了,这个成功了,说明我们这个代码质量它就分析成了,那分析成了,我们来看一下,那么这个流水线相当于就运行成了,你在这看一下代码质量,诶,它分析的确实成功了,我们相当于有19000行代码,然后呢,19K,那就19000行九个bug,诶我们写的代码肯定有BUG26个漏洞,然后呢有。
14:30
800多行都容易出错,这都是它的一些整个总结报告,那要看详情得去我们的sona cube里边来看,包括本来我们来点击它能看到详情的,只不过我们现在用的是我们这个集群内的这个地址,我们现在没办法看,我们现在直接来访问到任何一个人,192.16 8.56.10,我们来访问任何一个机器这一块就行了,好访问进来,如果你第一次没登录,它还会提示你登录,你登录了,那就是这样,那就直接能访问看现在这块呢,它列举出了我们所有的这个代码,其中有九个bug bug都是什么,它这一块呢,都提示很清楚,说我们这个空指针异常有可能在你这一行抛的抛出来,诶,我们能看到我们之前写的这个购物车代码里边,因为我们都没有做所有的这个飞空判断,我们留给大家做的,所以我们这一块呢,空指针异常,它检测到你的这个cutt,这个itto,基本上呢,会有控指针异常,然后再来我们其他。
15:30
它的这个bug呢,会还有更多来看O25U里边九个bug,那这个控制针异常的,还有我们这个返回结果签名这一块的,他说的啊,这一块的值,然后呢,包括他在这一块提示就是这个等等一呢有问题是什么问题,点开它这呢,其实都有一些编程建议,诶如果你是用compare to,那你就应该可以这么来判断,比如等等这个负一,这是我们说的以前呃比较不好的方式,然后呢,下边它建议的方式,建议的方式呢,你就判断是小于零还是什么的,这都是一些编码规则,所以我们就可以按照它的这个规则,我们再来修改所有的代码就行,当然我们这个代码呢,那么这一块整个这个流水线代码质量分析也都成功了以后,那我们下一节课呢,就来进行我们剩下的这些事情。
我来说两句