<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          推薦一個好用的嵌入式靜態(tài)代碼掃描工具!

          共 3117字,需瀏覽 7分鐘

           ·

          2023-11-08 08:35


                     
                     


          靜態(tài)代碼掃描?

          靜態(tài)代碼掃描是指無需運行被測代碼,通過詞法分析、語法分析、控制流、數(shù)據(jù)流分析等技術(shù)對程序代碼進行掃描,找出代碼隱藏的錯誤和缺陷,如參數(shù)不匹配,有歧義的嵌套語句,錯誤的遞歸,非法計算,可能出現(xiàn)的空指針引用等等。

          同樣的,也有運行時診斷的工具,如Valgrind等。

          靜態(tài)代碼掃描工具有很多,主流如:

          • cppcheck。免費,開源,更新較慢,可自己拓展開發(fā)。
          • clang。免費,開源,更新較慢,可自己拓展開發(fā)。
          • TscanCode 。免費,有專人維護,定期根據(jù)用戶需求擴展規(guī)則或新增功能特性。
          • pclint。付費,商業(yè)軟件,難以進行功能擴展。
          • coverity。付費,商業(yè)軟件,難以進行功能擴展。

          關(guān)于這幾個工具各個指標的詳細對比可參考文章:

          https://blog.csdn.net/wetest_tencent/article/details/51516347

          本篇博文我們來介紹TscanCode。

          TscanCode

          TscanCode是騰訊研發(fā)的靜態(tài)代碼掃描工具,最早的版本是基于 cppcheck 二次開發(fā)。之后又重新自研,不僅支持 C/C++,還支持 C#,Lua 語言,在發(fā)掘 C/C++ 空指針、越界、未初始化、C#空引用、Lua變量未初始化等比較有效。

          TscanCode 的 Github鏈接:

          https://github.com/Tencent/TscanCode

          TscanCode 可編譯、運行于多個平臺:Windows/Linux/Mac。

          TscanCode 主要能夠發(fā)現(xiàn)的問題如下:

          • 自動變量檢查:返回自動變量(局部變量)指針;
          • 越界檢查:數(shù)組越界返回自動變量(局部變量)指針;
          • 類檢查:構(gòu)造函數(shù)初始化;
          • 內(nèi)存泄露檢查;
          • 空指針檢查;
          • 廢棄函數(shù)檢查;

          下載得到:

          各文件夾的內(nèi)容:

          • release文件夾:存放編譯后的二進制文件,包含有Linux、Mac、Windows平臺。
          • samples文件夾:存放一些代碼示例,分別有C++、C#、Lua語言。
          • trunk文件夾:存放TscanCode源代碼。

          1、Linux下使用TscanCode

          對應(yīng)的Linux二進制文件存放在如下路徑:

          TscanCode-master/release/linux/TscanCodeV2.14.2395.linux

          使用前需要加上執(zhí)行權(quán)限:

          chmod +x tscancode

          例子:使用tscancode檢測samples文件夾下關(guān)于cpp的一些例子。

          在TscanCode-master/release/linux/TscanCodeV2.14.2395.linux路徑下執(zhí)行命令:

          ./tscancode --xml --enable=all -q ../../../samples/cpp/ >scan_result.xml 2>&1

          得到掃描結(jié)果文件:scan_result.xml。該文件復(fù)制到Windows下使用表格工具打開可比較清晰地看到掃描結(jié)果:

          例子:使用tscancode檢測C語言例子。

          在TscanCode-master/release/linux/TscanCodeV2.14.2395.linux路徑下新建一個文件:

          test.c:

          #include <stdio.h>

          void test(void)
          {
              char buf[5] = {0};

              for (size_t i = 0; i < 10; i++)
              {
                  buf[i] = 1;
              }
          }

          int main(int argc, char **argv)
          {
              test();
              return 0;
          }

          掃描:

          ./tscancode --xml --enable=all -q ./test.c >scan_result.xml 2>&1

          結(jié)果:

          2、Windows下使用TscanCode

          最新版本的release下已經(jīng)去掉windows下的可執(zhí)行文件。可使用V2.14.24版本的TscanCodeV2.14.24.windows.exe。

          可參照文章:

          https://blog.csdn.net/m0_53168002/article/details/126596565



          最近很多小伙伴找我要一些程序員必備資料,于是我翻出了壓箱底的寶藏,免費分享給大家!


          掃描海報二維碼免費獲取。


          瀏覽 1090
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  人人看人人玩 | 学生妹做爱视频 | 性色av蜜桃 | 操逼免费视频看看 | 国产精品九九九九九九 |