TscanCode, 用于 C++,C#,Lua的static 代码分析器

分享于 

4分钟阅读

GitHub

  繁體 雙語
TscanCode
  • 源代码名称:TscanCode
  • 源代码网址:http://www.github.com/Tencent/TscanCode
  • TscanCode源代码文档
  • TscanCode源代码下载
  • Git URL:
    git://www.github.com/Tencent/TscanCode.git
    Git Clone代码到本地:
    git clone http://www.github.com/Tencent/TscanCode
    Subversion代码到本地:
    $ svn co --depth empty http://www.github.com/Tencent/TscanCode
    Checked out revision 1.
    $ cd repo
    $ svn up trunk
    
    TscanCode

    Release version

    为 C/C++,C#,Lua代码提供快速而准确的static 分析解决方案

    腾讯很高兴通过使TscanCode可用来支持开源社区。

    版权所有( C ) 2017腾讯公司和TscanCode团队。 保留所有权利。

    简介

    TscanCode致力于帮助程序员在开始时发现代码缺陷。

    • TscanCode支持多种语言:C/C++C#Lua 代码;
    • TscanCode是 fastaccurate,性能可以是 200K 行,准确率为 90% ;
    • TscanCode是 easy to use,不需要严格编译环境,单个命令可以使它的工作;
    • TscanCode是 extensible,你可以使用TscanCode实现你自己的检查。

    在v2.14.24年( 2018-02-24年), Highlights Highlights

    • Rule Package 是在GUI上发布的,更容易定制
    • GUI现在支持 marking false-positive errors

    有关其他更改,请参阅更改日志文件。

    编译

    任何C++11编译器都应该工作。 对于具有部分C++11支持的编译器,它可能会工作。 如果编译器具有 Visual Studio 2015中可用的C++11特性,那么它将工作。 如果编译器不支持 nullptr,则可以使用标头 lib/cxx11emu。h 对它的进行仿真。

    有多种编译选项:

    • Windows: Visual Studio ( Visual Studio 2015和更高版本)
    • Linux: G++ 4.6 ( 或者更高版本)
    • Mac: clang+ +

    Visual Studio

    使用 tsancode.sln 文件。该文件配置为 Visual Studio 2015,但平台工具集可以轻松更改为旧版本或者更新版本。 解决方案包含x86和x64的平台目标。

    选择选项 Release 以生成版本版本。

    G++ 或者 clang+ +

    简单构建( 无相关性):

    make

    的用法一览

    这个简单的例子包含一个潜在的空指针缺陷。 检查p 是否为空表明p 可能为空,因此在 if-scope 之外取消引用p *p 是不安全的。

    // func.cppvoidfunc(int* p) {
     if(p == NULL) {
     printf("p is null!");
     }
     printf("p is %d", *p);
    }

    运行 TscanCode:

    ./tscancode --xml func.cpp 2>result.xml

    错误 List,result.xml:

    <?xml version="1.0" encoding="UTF-8"?>
    <results>
     <errorfile="func.cpp"line="7"id="nullpointer"subid="dereferenceAfterCheck"severity="error" 
     msg="Comparing [p] to null at line 3 implies [p] might be null. Dereferencing null pointer [p]."/>
    </results>

    还有更多示例:

    目前,主干下的代码只适用于 CPP 版本,C#Lua 版本位于内部审查进程中。 造成 不便 深感 抱歉.


    STA  cod  STAT  静态  LUA  分析器  
    相关文章