Warning, /sdk/clazy/clazy.cmake is written in an unsupported language. File is not indexed.
0001 #!/usr/bin/env sh 0002 0003 libdir=$("@READLINK_CMD@" -f "$(dirname ${0})/@BIN_RELATIVE_LIBDIR@") 0004 sharedir=$("@READLINK_CMD@" -f "$(dirname ${0})/@BIN_RELATIVE_SHAREDIR@") 0005 0006 HELP() { 0007 echo "Usage: `basename $0` [options] [clang++-options]" 0008 echo 0009 echo "Static analyzer for C++/Qt code (https://invent.kde.org/sdk/clazy)" 0010 echo 0011 echo "Options:" 0012 echo " --help print program help" 0013 echo " --version print the program version" 0014 echo " --standalone run clazy-standalone instead of clang" 0015 echo " --list print a list of all available checkers, arranged by level" 0016 echo " --explain [regexp] print explanations for the checker matching a regexp" 0017 echo "or" 0018 echo " --explain print explanations for all checkers" 0019 echo 0020 echo "Any of the options above will print the requested information and then exit." 0021 echo 0022 echo "Convenience Options:" 0023 echo " --qt4compat Qt4 compatibility mode. useful for source code that can build with Qt4" 0024 echo " (this is the same as passing \"-Xclang -plugin-arg-clazy -Xclang qt4-compat\")" 0025 echo " --qtdeveloper Special option for building Qt5 itself resulting in fewer false positives" 0026 echo " (this is the same as passing \"-Xclang -plugin-arg-clazy -Xclang qt-developer\")" 0027 echo 0028 echo "All other options are passed directly to clang++ and handled from there." 0029 echo 0030 echo "See the clang++ manual for a list of the very large set of options available" 0031 echo 0032 echo "Environment Variables:" 0033 echo " CLANGXX Path to the clang++ executable to use" 0034 echo 0035 } 0036 0037 VERSION() { 0038 echo "clazy version: @CLAZY_PRINT_VERSION@" 0039 ${CLANGXX:-clang++} --version | head -1 | awk '{printf("clang version: %s\n",$3)}' 0040 } 0041 0042 PRLIST() { 0043 echo "" 0044 if ( test -d "$sharedir/doc/clazy/$1" ) 0045 then 0046 echo "$2:" 0047 ls -1 $sharedir/doc/clazy/$1/README* | awk -F/ '{printf(" %s\n", $NF)}' | sed s/README-// | sed s/\.md$// | sort 0048 else 0049 echo "There are no checkers available for $1" 0050 fi 0051 } 0052 0053 PRINFO() { 0054 lst=`ls -1 $sharedir/doc/clazy/level*/README*$1* $sharedir/doc/clazy/manuallevel/README*$1* 2>/dev/null` 0055 if ( test ! -z "$lst" ) 0056 then 0057 for f in $lst 0058 do 0059 l=`echo $f | awk -F/ '{foo=NF-1; printf(" %s:%s\n", $foo,$NF)}'` 0060 level=`echo $l | cut -d: -f1` 0061 checker=`echo $l | cut -d: -f2 | sed s/README-// | sed s/\.md$//` 0062 echo "== Explanation for checker $checker ($level) ==" 0063 cat $f 0064 echo 0065 done 0066 else 0067 echo "There is no explanation available for checker \"$1\"" 0068 echo "Run 'clazy --explain' to see the list of all available checkers." 0069 fi 0070 } 0071 0072 if ( test $# -gt 0 -a "$1" = "--help" ) 0073 then 0074 HELP 0075 exit 0076 fi 0077 0078 if ( test $# -gt 0 -a "$1" = "--version" ) 0079 then 0080 VERSION 0081 exit 0082 fi 0083 0084 if ( test $# -gt 0 -a "$1" = "--list" ) 0085 then 0086 echo "List of available clazy checkers:" 0087 PRLIST level0 "Checks from level0. Very stable checks, 100% safe, no false-positives" 0088 PRLIST level1 "Checks from level1. Mostly stable and safe, rare false-positives" 0089 PRLIST level2 "Checks form level2. Sometimes has false-positives (20-30%)" 0090 #PRLIST level3 "Checks from level3. Not always correct, high rate of false-positives" 0091 PRLIST manuallevel "Manual checks. Stability varies. must be explicitly enabled" 0092 exit 0093 fi 0094 0095 if ( test $# -gt 0 -a "$1" = "--explain" ) 0096 then 0097 shift 0098 PRINFO $@ 0099 exit 0100 fi 0101 0102 ExtraClangOptions="" 0103 if ( test $# -gt 0 -a "$1" = "--qt4compat" ) 0104 then 0105 shift 0106 ExtraClangOptions="-Xclang -plugin-arg-clazy -Xclang qt4-compat" 0107 fi 0108 if ( test $# -gt 0 -a "$1" = "--qtdeveloper" ) 0109 then 0110 shift 0111 ExtraClangOptions="-Xclang -plugin-arg-clazy -Xclang qt-developer" 0112 fi 0113 if ( test $# -gt 0 -a "$1" = "--visit-implicit-code" ) 0114 then 0115 shift 0116 ExtraClangOptions="-Xclang -plugin-arg-clazy -Xclang visit-implicit-code" 0117 fi 0118 0119 case "$CLAZY_CHECKS" in 0120 *jni-signatures*) 0121 if [ -z "$ANDROID_NDK" ] 0122 then 0123 echo "To test JNI signatures you need to set ANDROID_NDK to your Android NDK installation." 0124 exit 0125 fi 0126 0127 ExtraClangOptions=$ExtraClangOptions" -idirafter"$ANDROID_NDK"/sysroot/usr/include" 0128 ;; 0129 esac 0130 0131 ClazyPluginLib=ClazyPlugin@CMAKE_SHARED_LIBRARY_SUFFIX@ 0132 0133 if ( test -f "$libdir/$ClazyPluginLib" ) 0134 then 0135 # find plugin libraries in install dir 0136 export LD_LIBRARY_PATH=$libdir:$LD_LIBRARY_PATH 0137 export DYLD_LIBRARY_PATH=$libdir:$DYLD_LIBRARY_PATH 0138 elif ( test -f "$(dirname $0)/lib/$ClazyPluginLib" ) 0139 then 0140 # find plugin libraries in build dir 0141 export LD_LIBRARY_PATH=$(dirname $0)/lib:$LD_LIBRARY_PATH 0142 export DYLD_LIBRARY_PATH=$(dirname $0)/lib:$DYLD_LIBRARY_PATH 0143 fi 0144 0145 if ( test $# -gt 0 -a "$1" = "--standalone" ) 0146 then 0147 shift 0148 if ( test -f "$(dirname $0)/clazy-standalone" ) 0149 then 0150 # find binary in install dir 0151 $(dirname $0)/clazy-standalone "$@" 0152 else 0153 # hope binary is in the expected build dir 0154 $(dirname $0)/bin/clazy-standalone "$@" 0155 fi 0156 else 0157 ${CLANGXX:-clang++} -Qunused-arguments -Xclang -load -Xclang $ClazyPluginLib -Xclang -add-plugin -Xclang clazy $ExtraClangOptions "$@" 0158 fi