github与gltm持续集成教程
<h2 id="lgtm简介">LGTM简介</h2><p>LGTM提供了一个持续集成工具,主要检查代码的安全性、可维护性等等,官网在https://lgtm.com/ 可直接用github登录。关于LGTM的介绍可以看https://lgtm.com/help/lgtm/about-lgtm<br>
主要还是可以得到一个帅帅的code quality认证<img src="https://img2022.cnblogs.com/blog/1834216/202206/1834216-20220620222037142-1894472855.png"></p>
<img src="https://img2022.cnblogs.com/blog/1834216/202206/1834216-20220620222045088-937800191.png">
<h2 id="c-ci配置">C++ CI配置</h2>
<h3 id="工具链">工具链</h3>
<p>Windows10 -- MinGW + CMake ,WSL2</p>
<h3 id="准备">准备</h3>
<p>登录LGTM,点击右上角的Project lists,复制自己仓库的地址,点击follow,看到下面出现仓库就说明follow成功了,会尝试默认配置进行build<br>
<img src="https://img2022.cnblogs.com/blog/1834216/202206/1834216-20220620222519898-731472793.png"></p>
<h3 id="lgtm-c配置文件">LGTM C++配置文件</h3>
<p>如果比较幸运,默认配置Build成功了,那就不用看这一段了<br>
根据官网教程(https://lgtm.com/help/lgtm/customizing-code-extraction )可以用临时或者项目中的lgtm.yml文件来自定义代码构建流程<br>
点击build logs右上角的Test analysis configuration,可以试验一些设置</p>
<pre><code>extraction:
cpp:
prepare:
packages:
#准备需要的包,这里我出于谨慎提了gcc和cmake,但是似乎不用
- "gcc"
- "g++"
- "cmake"
#我用到了eigen库,并且apt中的版本可以用,只需在这指定包
- "libeigen3-dev"
configure:
command:
- "mkdir ${LGTM_SRC}/build"
index:
build_command:
#这里操作就是正常的cmake build流程
- "cd ${LGTM_SRC}/build"
- "cmake .."
- "cmake --build . -j2"
</code></pre>
<p>由于我的代码很不幸地需要用到最新版opencv,所以还要加入一些步骤。<br>
先由WSL2编译opencv4.5,然后将库文件打包成tar<br>
然后在WSL2上尝试build流程,将执行的shell指令写入lgtm.yml文件中</p>
<pre><code>extraction:
cpp:
prepare:
packages:
#准备需要的包,这里我出于谨慎提了gcc和cmake,但是似乎不用
- "gcc"
- "g++"
- "cmake"
#我用到了eigen库,并且apt中的版本可以用,只需在这指定包
- "libeigen3-dev"
configure:
command:
#写在这和写在下面好像没什么区别,都会执行bash
- "mkdir ${LGTM_SRC}/build"
#解压仓库中提前编译好的opencv4.5版本压缩包
- "cd ${LGTM_SRC}/3Party/linux-build"
- "tar -xzf opencv.tar"
index:
build_command:
#这里操作就是正常的cmake build流程
- "cd ${LGTM_SRC}/build"
- "cmake .."
- "cmake --build . -j2"
#因为我引入了opencv包而不是apt安装的,为了防止代码检查它而浪费时间,rm掉它
- "cd .."
- "rm -r 3Party/*"
</code></pre>
<p>你可以在LGTM的logs - 对应语言 - Extraction看到这些代码执行后的stdout和stderr</p>
<h3 id="大功告成">大功告成</h3>
<p>看到Succeeded就说明build成功了<br>
<img src="https://img2022.cnblogs.com/blog/1834216/202206/1834216-20220620222018074-59842165.png"><br>
<br></p>
<p>这时候就可以按照Integrations中的提示设置badges了<br>
<img src="https://img2022.cnblogs.com/blog/1834216/202206/1834216-20220620223746128-329841707.png"></p><br><br>
来源:https://www.cnblogs.com/Nikola-K/p/16395037.html
頁:
[1]