美文网首页iOS 技术笔记
【clang-Tidy】模块化静态分析框架

【clang-Tidy】模块化静态分析框架

作者: Yaso | 来源:发表于2020-12-01 14:41 被阅读0次

由于clang plugin 大家已经很熟悉,加上之前已经做过,然后简单的LibTooling 和 plugin又没有什么本质的区别,然后基于我们以后需要做的检测会很多,希望可以做到分模块管理,加上我们需要有auto fixIt 的能力,希望可以快速添加指定checker,所以此次选用全新静态分析框架:clang-tidy 来做,通过自定义module和checker来支持独立模块化检测,结合ASTMatcher精准匹配节点&提供auto fixIt 能力。

痛点

  • code review时还要注意一些基本的代码规范是否正确,code review时间拉长,浪费RD时间
  • code review时难免会遗漏或看错部分代码行,不能强制保持逐行review,有一定风险性
  • 如何保证代码质量?如何保证出现过问题的代码case不再出现?

目标

通过clang tool运行指定module checker,用针对相应代码缺陷&规范编写的check代码,on the preprocessor level or the AST level 进行检查,并生成相应的 diagnosis 来警告或报错提示开发者,同时提供FixHint来提示或自动修复,从而减少工程中不符合规范&缺陷的代码,以缩短code review时间,保证code review效率和准确性,降低检查失败次数,提升发版成功率, 最终全面提高代码质量和工程稳健性!

大型工程化项目支持

#!/bin/bash

src="/Users/yaso/Desktop/P/yourProject/Pods/Headers/Private"
dst="/Users/yaso/Desktop/Headers"
echo $src

function read_dir(){
    for file in `ls $1`;do
        if [ -d $1"/"$file ];then
            read_dir $1"/"$file
        else
            echo $1"/"$file 
            [ `cp $1"/"$file $dst` ]
        fi
    done
}

include=""
function append_include(){
    
    for file in `ls $1`;do
        if [ -d $1"/"$file ];then
            row=" -extra-arg-before=-I"$1"/"$file
            include=$include$row
        fi
    done
}

append_include $src
echo "successful!"



/Users/yaso/Desktop/clang_llvm/llvm-project/build/Debug/bin/clang-tidy \
-enable-check-profile \
-checks="objc-property-declaration, -clang-analyzer-osx.cocoa.*, -clang-diagnostic-objc-missing-super-calls" \
-warnings-as-errors="clang-analyzer-nullability.*" \
-extra-arg-before="-language=objective-c " \
-extra-arg-before "-isysroot/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator12.2.sdk" \
-extra-arg-before="-I/Users/yaso/Desktop/P/yourProject/Pods/Headers/Private" \
-extra-arg-before="-I/Users/yaso/Desktop/P/yourProject/Pods/Headers/Public" \
-extra-arg-before="-fobjc-weak" \
-extra-arg-before="-std=gnu11" \
$include \
/Users/yaso/Desktop/P/Project/Pod/Classes/Controller/*.m -- -v

相关文章

网友评论

    本文标题:【clang-Tidy】模块化静态分析框架

    本文链接:https://www.haomeiwen.com/subject/ocdswktx.html