精华内容
下载资源
问答
  • 推荐几款代码检查工具,淘宝开源代码质量检测工具
    千次阅读
    2020-10-26 00:00:00

    好的代码一定是整洁的,并且能够帮助阅读的人快速理解和定位。好的代码可以加快应用的开发迭代速度,不必花过多的时间来修复 bug 和完善代码。好的代码不但能够使得新的项目成员更容易加入项目,同时方便项目组成员快速做好 Back up。好的代码便于促进团队间交流合作提升开发效率。

    代码质量评价标准

    有编码经验的人对代码都有一定的“鉴赏力”,能够凭感觉给出代码好坏的主观评价。但是这种凭感觉的方式太过个性随意,所谓仁者见仁智者见智,很难达成共识,那有没有一种公认的标准来鉴定代码质量呢?

    答案是有的。这里简单分享当下较常用的评价标准,其中包括:编码规范、可读性、可维护性、重复度及可测试性。

    编码规范

    主要包含是否遵守了最佳实践和团队编码规范,是否包含可能出问题的代码,以及可能存在安全的漏洞。编码规范有助于提高团队内协助的效率以及代码的可维护性。

    可读性

    Code Review 是一个很好的测验代码可读性的手段。如果你的同事可以轻松地读懂你写的代码,那说明你的代码可读性很好;反之则说明你的代码可读性有待提高了。遵守编码规范也能让我们写出可读性更好的代码。

    可维护性

    代码的可维护性是由很多因素协同作用的结果。代码的可读性好、简洁、可扩展性好,就会使得代码易维护;更细化地讲,如果代码分层清晰、模块化好、高内聚低耦合、遵从基于接口而非实现编程的设计原则等等,那就可能意味着代码易维护。除此之外,代码的易维护性还跟项目代码量的多少、业务的复杂程度、利用到的技术的复杂程度、文档是否全面等诸多因素有关。

    重复度

    遵守 Don’t Repeat Yourself 原则,尽量减少重复代码的编写,复用已有的代码。对项目定期进行代码重复度检测是一个很有意义的事,可以帮助开发人员发现冗余代码,进行代码抽象和重构。重复的代码一旦出错,意味着加倍的工作量和持续的不可控。如果代码中有大量的重复代码,就要考虑将重复的代码提取出来,封装成公共的方法或者组件。

    可测试性

    代码可测试性的好坏,同样可以反应代码质量的好坏。代码的可测试性差,比较难写单元测试,那基本上就能说明代码设计得有问题。

    除此之外还有很多代码质量评价标准。我们需要一些取舍,选取部分大家有共识的规则定义团队好的代码标准。

    代码质量维度

    当前版本通过 @iceworks/doctor 从 5 个维度对代码进行评分:

    1. 最佳实践:通过 @iceworks/eslint-plugin-best-practices 分析项目,提出符合当前工程特征(对 ice 和 Rax项目友好)的最佳实践及阻塞问题发布卡口,帮助开发者优化项目性能,避免潜在 bug 。

    2. 安全实践:通过 @iceworks/eslint-plugin-security-practices 扫码代码检测工程中可能存在的安全风险,包含 url 、敏感成词、明文账密信息及 npm 包证书检测,降低项目安全风险,守卫项目安全。

    3. 阿里代码规范:这一维度主要反馈开发人员对于 eslint-config-ali 阿里开发规约的遵守程度。

    4. 可维护度:通过 typhonjs-escomplex 对文件进行扫码,得出每个文件的可维护度,可读性及复杂度评分。针对得分较差的文件可以进行深度分析帮助开发者更好的重构复杂代码。

    5. 重复度:通过 jscpd 计算重复出现的代码区块占比,计算出 clone 分数。并逐一列举重复的代码,方便开发者快速定位重复代码,将其封装成公共的方法或者组件。

    根据上述 5 个维度通过加权平均的方式计算项目质量分,并根据木桶效应,在计算得分的过程中加大了最低分的权重,得出最终项目质量评分。

    项目地址

    github地址:https://github.com/ice-lab/iceworks/tree/master/

    推荐几款代码质量检测工具:

    然后说说工具的问题。我用过的开源、商业代码质量工具没少说也有个二三十种( V 站除了同行应该没人比我多了。。。吧)。这些工具如果按照规则类型划分,可以看做两类。一类安全,也就是检查安全问题,比如 NullPointer、SQL Injection、Data Race,他们会影响程序的安全运行;一类是规约,简单来说就是 code style。不过考虑到很多规则其实两者兼具,我就简单的按语言划分好了。(都是开源的)

    c/c++:

    clang-tidy http://clang.llvm.org/extra/clang-tidy

    CSA https://clang-analyzer.llvm.org

    cppcheck https://github.com/danmar/cppcheck

    cpplint https://github.com/google/styleguide

    phasar https://github.com/secure-software-engineering/phasar

    这里面比较推荐 clang-tidy,虽然规则不多,但是规则编写简单,只要你对 C++有足够了解,可以定制出十分丰富的内容

    java:

    google-java-format https://github.com/google/google-java-format

    find-sec-bugs https://find-sec-bugs.github.io

    spotbugs https://spotbugs.github.io

    pmd https://github.com/pmd/pmd

    p3c https://github.com/alibaba/p3c

    soot https://sable.github.io/soot

    spotbugs 和 pmd 都是比较优秀的工具,前者有 find-sec-bugs 这样的插件。而后者,ali 的 p3c 规则集就是基于 pmd 实现的。此外 pmd 是一个针对多种语言的框架,内容十分丰富。这两者国际化和文档都做的非常好。而 soot 本质上一个 jvm bytecode 的优化框架,但同样可以基于此做出各种工具,不过考虑到它复杂的内容,emmmm...

    其他:

    python https://github.com/PyCQA/pylint

    kotlin https://github.com/arturbosch/detekt

    JS/TS https://github.com/eslint/eslint

    Rust https://github.com/rust-lang/rust-clippy

    shell https://github.com/koalaman/shellcheck

    Multiple languages https://github.com/facebook/infer

    Multiple languages https://github.com/github/semantic

    我列举的都是我觉得有用的并且目前处于活跃状态的项目,大家无聊的话可以看看。还有一个专门介绍静态分析工具的仓库https://github.com/mre/awesome-static-analysis

    再然后对于工具的使用。对于工具大家都知道,不用等于没用。所以一般的解决办法都是融入流程,最简单的像 Unittest 一样,编译完成后跑一遍。并入 CI 流程也是普遍做法,代码入库前扫描成功才允许合并,这样同时还可以保证 code format 的问题。除此之外,减少这类工具的 report 数量也是重点。过于繁多的报告(尤其是项目早期开发的时候)往往不利于发现真正有价值的问题,也不利于修复。所以熟悉工具的规则和配置,少报无关问题是工具使用的关键。

    简单说就这么多,如果感兴趣我有空可以开个系列,专门介绍代码静态分析的技术、使用问题

    号称中国最好的静态分析工具(将来就是世界最好)

    https://www.sourcebrella.com/

    对标国际厂商比如 Coverity、fortify、checkmax,我们一点不虚,甚至在技术上还有优势( PLDI、ICSE 最近几年都有论文) 

    更多相关内容
  • Alibaba代码检查工具插件

    千次阅读 2020-10-20 10:19:23
    真香定律--Alibaba代码检查工具插件插件安装:使用方法: 作为idea的小插件,阿里的这一款代码扫描工具能给与我们很大程度上的代码检测,书写规范的提示!!!(用过的都说香) 插件安装: 点击File -> Settings - ...

    真香定律--Alibaba代码检查工具插件

    作为idea的小插件,阿里的这一款代码扫描工具能给与我们很大程度上的代码检测,书写规范的提示!!!(用过的都说香)

    插件安装:

    点击File -> Settings - > Plugins 搜索Alibaba
    

    在这里插入图片描述
    安装好以后重启IDEA就能使用拉!

    使用方法:

    可以直接右键使用
    

    在这里插入图片描述
    在控制台上我们就能看到提示信息
    在这里插入图片描述

    或者点击TOOLS
    

    在这里插入图片描述
    效果是一样的噻!!!!!

    IDEA中还有什么实用的插件欢迎大家在评论区讨论,让我也感受一哈
    
    展开全文
  • 开源C++/C代码检查工具

    千次阅读 2019-04-08 11:03:00
    总结:cppcheck与splint是静态的代码检查工具,valgrind为动态的代码检查工具。主要检查对象都是内存管理错误。valgrind由于前两者,它得到更为丰富准确的信息。但是由于它提供了大量的信息,对于是否是bug的鉴定...

    Cppcheck
    cppcheck是静态的C/C++ 代码分析工具,用以检查内存泄漏,错配的内存分配和释放,缓冲区溢出等问题。支持eclipse插件。
    Someof the checks that are supported include:

    http://en.wikipedia.org/wiki/Cppcheck


    Splint:

    Splint是静态检查C语言安全弱点和编写错误的程序。检查主要包括:未使用的变量,类型不一致,使用未定义的变量,内存管理错误(内存泄露,悬浮指针等),缓冲区溢出,无法执行到的程序,忽略返回值,无限循环等。

    Problemsdetected by Splint include:

    •  Dereferencing a possibly null pointer (Section 2);
    •  Using possibly undefined storage or returning storage that is not properly defined (Section 3);
    •  Type mismatches, with greater precision and flexibility than provided by C compilers (Section 4.1–4.2);
    •  Violations of information hiding (Section 4.3);
    •  Memory management errors including uses of dangling references and memory leaks  (Section 5);
    •  Dangerous aliasing (Section 6);
    •  Modifications and global variable uses that are inconsistent with specified interfaces (Section 7);
    •  Problematic control flow such as likely infinite loops (Section 8.3.1), fall through cases or incomplete switches (Section 8.3.2), and suspicious statements (Section 8.4);
    •  Buffer overflow vulnerabilities (Section 9);
    •  Dangerous macro implementations or invocations (Section 11); and
    •  Violations of customized naming conventions.  (Section 12)
      .源文档 <<A href="http://splint.org/manual/html/sec1.html">http://splint.org/manual/html/sec1.html>

    经过初步测试splint相对于cppcheck更为强大,而且当前版本更为稳定。

     

    Valgrind:

    Valgrind是一个用于检查程序内存泄漏、段错误等bug的工具。它包含的有:内存检测、缓存检测、代码覆盖、性能测试等功能。Valgrind的最初作者是Julian Seward,他于2006年由于在开发Valgrind上的工作获得了第二届Google-O'Reilly开源代码奖。

    Valgrind是运行在 Linux上一套基于仿真技术的程序调试和分析工具,它包含一个内核——一个软件合成的CPU,和一系列的小工具,每个工具都可以完成一项任务──调试,分析,或测试等。Valgrind可以检测内存泄漏和内存违例,还可以分析cache的使用等,灵活轻巧而又强大,能直穿程序错误的心脏,真可谓是程序员的瑞士军刀。它包括Memcheck,Callgrind, Cachegrind, helgrind等一些列的工具。

    Memcheck是其中最常用的工具,用来检测程序中出现的内存问题,所有对内存的读写都会被检测到,一切对malloc()/free()/new/delete的调用都会被捕获。所以,它能检测以下问题:

    1.对未初始化内存的使用;

    2.读/写释放后的内存块;

    3.读/写超出malloc分配的内存块;

    4.读/写不适当的栈中内存块;

    5.内存泄漏,指向一块内存的指针永远丢失;

    6.不正确的malloc/free或new/delete匹配;

    7,memcpy()相关函数中的dst和src指针重叠。

     

    一些常用的选项:

           查考其帮助 valgrind -h       or   info valgrind

     

    我们通过例子看一下它的具体使用。我们构造一个存在内存泄漏的C程序,如下:

    ?

    1

    2

    3

    4

    5

    6

    7

    8

    9

    10

    11

    12

    13

    14

    15

    16

    17

    18

    19

    20

    21

    22

    23

     

     

     

     

     create by guolb57 valgrind_test.c  

     gcc -Wall -g -o valgrind_test -o valgrind_test.c

     use valgrind: 

           valgrind --tool=memcheck ./valgrind_test 

    or   valgrind --leak-check=full ./valgrind_test

     

     

     

    #include  

    #include  

       

    int valgrind_test() 

        int *p = malloc(10 * sizeof(int)); 

       

        p[10] = 0;    

       

        return 0; 

      

       

    int main(int argc, const char *argv[]) 

        valgrind_test(); 

        printf("hello world\n"); 

        return 0; 

    }

    我们得到如下错误信息:

    1340187959_6861.jpg

     

    我们可以很清楚地看出,分配和释放了多少内存,有多少内存泄漏。

    这对我们查找内存泄漏十分方便。然后我们重新编译程序并绑定调试器:

     

    Artistic Style Eclipse Plugin 是一个用来对C/C++代码进行格式化的 Eclipse 插件,可在 Eclipse CDT 环境中使用.可以用来定义基本的编码格式风格,比如代码缩进,在* +等运算符两端加上空格的,不同模块间添加空行

    CppNcss复杂度检查工具,可度量函数级,文件级,工程级的复杂度

     

    总结:cppcheck与splint是静态的代码检查工具,valgrind为动态的代码检查工具。主要检查对象都是内存管理错误。valgrind由于前两者,它得到更为丰富准确的信息。但是由于它提供了大量的信息,对于是否是bug的鉴定更为困难。ArtisticStyle Eclipse Plugin能在基本的代码格式风格和规范上起到一定的帮助作用。

     

    转载于:https://my.oschina.net/u/4000302/blog/3033475

    展开全文
  • 安装 在idea的plugins中搜索“alibaba”;...在idea中右键项目中需要检查的目录,点击“编码规约扫描”。 也可以在单个文件代码中右键,点击“编码规约扫描”。 根据扫描结果进行代码优化 ...

    安装

    1. 在idea的plugins中搜索“alibaba”;
    2. 在查询结果列表中选中“Alibaba Java Coding Guidelines plugin support”进行安装;
    3. 重启ide生效。

     

    使用

    • 在idea中右键项目中需要检查的目录,点击“编码规约扫描”。
    • 也可以在单个文件代码中右键,点击“编码规约扫描”。

    • 根据扫描结果进行代码优化

    展开全文
  • JAVA代码检查工具(开源) JAVA代码检查工具(开源) JAVA代码检查工具(开源) JAVA代码检查工具(开源) JAVA代码检查工具(开源)
  • Python 常用静态代码检查工具简介

    千次阅读 2018-07-26 10:04:09
    对于我这种习惯了 Java 这种编译型语言,在使用 Python 这种动态语言的时候,发现错误经常只能在执行的时候发现,总感觉有点不放心。...这时候 Python 静态语法检查工具就出现了。 本文使用之...
  • 本文主要介绍 PC-Lint代码检查工具简介及在Keil-MDK下的使用说明
  • 业界通用代码检查工具,介绍如下。 Valgrind :功能很多,常用于检查内存泄漏,包含几个常见工具如下。 memcheck --&gt; 这是valgrind应用最广泛的工具,一个重量级的内存检查器,能够发现开发中绝大多数内存...
  • 重复代码检查工具Simian

    千次阅读 2020-01-01 17:46:06
    Simian是一个可跨平台使用的重复代码检测工具,能够检测代码片段中除了空格、注释及换行外的内容是否完全一致,且支持的语言十分广泛 官网 Simian官网:http://www.harukizaemon.com/simian/index.html 下载 在...
  • FindBugs 是一个静态分析工具,它检查类或者 JAR 文件,将字节码与一组缺陷模式进行对比以发现可能的问题。有了静态分析工具,就可以在不实际运行程序的情况对软件进行分析。不是通过分析类文件的形式或结构来确定...
  • CodeChecker是一个基于LLVM/Clang的C/C++静态代码检查工具。 Github链接: https://github.com/Ericsson/codechecker 开发商:Ericsson(爱立信) 功能特性 支持多种代码检查器,目前主要支持Clang Static ...
  • python 代码检查工具

    千次阅读 2018-03-05 13:55:46
    项目中经常遇到获取的的最新代码运行报语法错误,主要是提交的人手工合并代码时未注意,或多或少空白符、空白行,或有遗漏合入点。...哈,这种问题,肯定前人已经解决了啊……python代码检查工具:Flake8...
  • Android | Android静态代码检查工具Lint

    千次阅读 2017-10-12 23:54:03
    Android提供了一个叫做Lint的静态代码检查工具。Lint工具可以帮助你检查可能影响应用质量和性能的代码问题。该工具会报告检测到的每个问题并提供问题的描述信息和严重级别,以便你可以快速地确定需要优先进行哪些...
  • 代码检查工具--findBugs

    万次阅读 2018-08-12 19:56:38
    好久没写了,下面谈谈findBugs,之前从来没有用户代码检测工具,下面是一个安装之后的样子  -- 1、前言 Findbugs很多人都并不陌生,Eclipse中有插件可以帮助查找代码中隐藏的bug,IDEA中也有这款插件。这...
  • vsCode关闭代码检查工具

    千次阅读 2018-12-04 09:45:00
    在script标签里,第一行输入下面的内容即可: 转载于:https://www.cnblogs.com/caoxueying2018/p/10062329.html
  • 代码检查工具系列——CheckStyle

    千次阅读 2016-03-21 00:34:49
    而外包团队当任务完成后,很多不会再与公司有业务关联,在项目验收时就要验收代码,那么如何面对大量的代码,人工去看完所有代码是一项非常庞大的工作,这时我们就需要好用的代码检查工具了。本篇博客将主要讲述...
  • 代码已经开源了,可以直接下载。地址:GitHub:https://github.com/alibaba/p3c eclipse上的插件链接地址:https://p3c.alibaba.com/plugin/eclipse/update安装步骤如下:1:打开eclipse。2:选择help选项中的...
  • Lint 静态代码检查工具

    千次阅读 2018-03-14 18:31:09
    转载自:http://blog.csdn.net/u010687392/article/details/47835743Android Studio目前已经更新到1.4版本,它作为Google官方推荐的IDE,功能非常强大,其中提供了一套静态代码分析工具,它可以帮助我们检查项目中...
  • 作为一枚软件攻城狮,你是不是总觉得自己撸代码的能力还有待提高却又无从下手?你是不是看到过XX大神美轮美奂的代码,然后佩服的五(ren)体(yang)投(ma)地(fan),然后躲在暗房里哭。然后你下定决心要痛改前非,然后...
  • Android 代码检查工具SonarQube

    万次阅读 2014-12-26 14:51:03
    代码检查工具能帮我们检查一些隐藏的bug,代码检查工具中sonar是比较好的一个。官网Sonar 概述 Sonar 是一个用于代码质量管理的开放平台。通过插件机制,Sonar 可以集成不同的测试工具,代码分析工具,以及持续集成...
  • C/C++静态代码检查工具

    千次阅读 2017-08-01 16:26:27
    如果能够在代码提交测试之前发现这些潜在的错误,就能够极大地减轻测试人员的压力,减少软件项目的除错成本,可是传统的C/C++编译器对此已经无能为力,这个任务只能由专用的代码检查工具完成。有很多C/C++静态代码...
  • PCLint静态代码检查工具

    热门讨论 2014-12-20 11:23:37
    PC-Lint 是GIMPEL SOFTWARE 公司研发的C/C++软件代码静态分析工具,他的全称是 PC-Lint/FlexeLint for C/C++。PC-Lint 能够在Windows、MS-DOS 和OS/2 平台上使用,以二 进制可执行文档的形式发布,而FlexeLint 运行...
  • eclipse代码检查工具-FindBugs介绍

    千次阅读 2015-08-21 10:59:32
    FindBugs是一款Java静态代码分析工具,与其他静态分析工具(如Checkstyle和PMD)不同,FindBugs 不注重样式或者格式,它专注于寻找真正的缺陷或者潜在的性能问题,它可以帮助java工程师提高代码质量以及排除隐含的...
  • C#静态代码检查工具StyleCode -- 初探

    千次阅读 2016-05-05 15:02:58
    最近我们Advent Data Service (ADS) 在项目上需要按照代码规范进行代码的编写工作,以方便将来代码的阅读与维护。 但是人工检查起来容易遗漏或者格式不统一, ReSharper又是收费的,而且费用不菲。 于是美国的同事...
  • 今天代码质量再次强调java代码提交SVN前要经过findBugs检查,虽然根据菜单我也基本会有findBugs插件,但为了更全面的学习、更高效的利用,我搜索学习了findbugs的用法。 检查原理 Findbugs是一个静态分析工具...
  • 以前觉得代码检查是不是需要好专业的工具和专业的知识才能做啊,没想到Android studio有自带的工具,弄得特别简单,简直神器。 首先是使用方法: 1、在菜单栏找到:analyze-->inspect code 2、选择...
  • java静态代码检查工具

    2016-02-01 05:35:40
    推荐一款java静态代码检查工具,可以java nullpointer exception静态检查,可以实现检查是否有抛空指针异常的可能性,便于解决代码中更多空指针异常的问题
  • JavaScript 代码检查工具对比

    千次阅读 2017-07-28 23:30:30
    JavaScript代码校验工具能够让你在写代码时避免一些低级的错误。尽管我有很多年的开发经验,我仍然会犯一些语法错误并且忘记处理我的错误。一个好的校验工具或者格式化工具,可以让我避免这些错误,以免浪费我的时间...
  • 冗余代码检查工具Simian

    千次阅读 2012-12-11 21:43:38
    冗余代码检查工具Simian 微软web2.0开发示例Kobe,重蹈了Oxite的覆辙。Ayende连续发表了五篇高质量的Kobe探讨贴: Kobe – In the nuts & bolts and don’t really liking itKobe – Data Access done ...
  • 有没有工具,可以批量的检查hive sql代码的执行效率,并提供出建议。

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 774,548
精华内容 309,819
关键字:

代码检查工具

友情链接: danxiangzhengliu.zip