github.com/muhammedhassanm/blockchain@v0.0.0-20200120143007-697261defd4d/sawtooth-core-master/bin/run_lint (about) 1 #!/bin/bash 2 # 3 # Copyright 2016 Intel Corporation 4 # 5 # Licensed under the Apache License, Version 2.0 (the "License"); 6 # you may not use this file except in compliance with the License. 7 # You may obtain a copy of the License at 8 # 9 # http://www.apache.org/licenses/LICENSE-2.0 10 # 11 # Unless required by applicable law or agreed to in writing, software 12 # distributed under the License is distributed on an "AS IS" BASIS, 13 # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 # See the License for the specific language governing permissions and 15 # limitations under the License. 16 # ------------------------------------------------------------------------------ 17 18 set -e 19 20 find_packages() { 21 topdir=$1 22 since=$2 23 24 ( 25 if [ "$since" != "" ]; then 26 git ls-files -mo "$topdir/*.py" -x build 27 git diff --name-only $since "$topdir/*.py" 28 else 29 find $topdir -name \*.py 30 fi 31 ) \ 32 | sort \ 33 | uniq \ 34 | git check-ignore --stdin --non-matching --verbose \ 35 | grep ^:: \ 36 | sed -e 's/^::\s//' \ 37 | grep -v /setup.py$ \ 38 | grep -v /setup_tests.py$ \ 39 | grep -v _pb2\.py$ \ 40 | grep -v poet_enclave\.py$ 41 } 42 43 lint() { 44 top_dir=$(cd $(dirname $(dirname $0)) && pwd) 45 cd $top_dir 46 subdir=$1 47 since=$2 48 49 pylintrc=.pylintrc 50 pylint_bin="python3 -m pylint" 51 52 error=0 53 54 packages=$(find_packages "$subdir" "$since") 55 56 if [ "$packages" != "" ]; then 57 [ $VERBOSE = 0 ] && echo "$subdir" 58 59 [ $VERBOSE = 0 ] && echo "-- pycodestyle" 60 61 [ $VERBOSE = 1 ] && ( 62 echo "------------------------------------------------------------------------------" 63 echo "-- Running pycodestyle in $subdir..." 64 ) 65 66 pycodestyle --config=$top_dir/.pycodestyle $packages || error=1 67 68 [ $VERBOSE = 0 ] && echo "-- pylint" 69 70 [ $VERBOSE = 1 ] && ( 71 echo "------------------------------------------------------------------------------" 72 echo "-- Running $pylint_bin $pylintrc in $subdir..." 73 ) 74 75 $pylint_bin \ 76 --rcfile=$pylintrc \ 77 --reports=no \ 78 --score=no \ 79 --persistent=no \ 80 $packages || error=1 81 82 83 [ $VERBOSE = 1 ] && ( 84 echo "------------------------------------------------------------------------------" 85 echo "-- Checking for CRLF in $subdir..." 86 ) 87 88 file $packages | grep CRLF && error=1 89 90 else 91 [ $VERBOSE = 1 ] && ( 92 echo "------------------------------------------------------------------------------" 93 echo "-- Skipping pep8 and pylint $pylintrc in $subdir. (Nothing to do.)" 94 ) 95 fi 96 97 return $error 98 } 99 100 usage() { 101 echo "Usage:" 102 echo " $0 [-s BRANCH] [-n] [-h]" 103 echo 104 echo "Options:" 105 echo " -h print usage and exit" 106 echo " -n dry-run, only prints files that would be linted" 107 echo " -s BRANCH only lint files changed since BRANCH" 108 echo " -v increase verbosity" 109 } 110 111 112 DRY_RUN=0 113 VERBOSE=0 114 SINCE="" 115 while getopts :s:nhv opt 116 do 117 case $opt in 118 h) 119 usage 120 exit 0 121 ;; 122 n) 123 DRY_RUN=1 124 ;; 125 s) 126 SINCE=$OPTARG 127 ;; 128 v) 129 if [ "$VERBOSE" = "1" ]; then 130 set -x 131 fi 132 VERBOSE=1 133 ;; 134 \?) 135 echo "Invalid option: -$OPTARG" >&2 136 exit 2 137 ;; 138 esac 139 done 140 141 echo "pycodestyle $(pycodestyle --version)" 142 echo "$(pylint --version)" 143 144 if [ "$DRY_RUN" = "1" ]; then 145 for dir in signing validator sdk/python sdk/examples/intkey_python \ 146 consensus/poet/cli consensus/poet/common consensus/poet/core \ 147 consensus/poet/families consensus/poet/sgx consensus/poet/simulator 148 do 149 for package in $(find_packages "$dir" "$SINCE") 150 do 151 echo $package 152 done 153 done 154 exit 0 155 fi 156 157 158 top_dir=$(cd $(dirname $(dirname $0)) && pwd) 159 retval=0 160 161 # Modules should be ranked in decreasing likelihood of having lint 162 # errors. It would be nice if there was a more convenient way of 163 # organizing these. 164 165 # validator 166 PYTHONPATH=$top_dir/signing 167 PYTHONPATH=$PYTHONPATH:$top_dir/validator 168 export PYTHONPATH 169 lint validator "$SINCE" || retval=1 170 171 # integration 172 PYTHONPATH=$PYTHONPATH:$top_dir/signing 173 PYTHONPATH=$PYTHONPATH:$top_dir/cli 174 PYTHONPATH=$PYTHONPATH:$top_dir/validator 175 PYTHONPATH=$PYTHONPATH:$top_dir/integration 176 PYTHONPATH=$PYTHONPATH:$top_dir/sdk/python 177 PYTHONPATH=$PYTHONPATH:$top_dir/sdk/examples/intkey_python 178 PYTHONPATH=$PYTHONPATH:$top_dir/families/block_info 179 export PYTHONPATH 180 lint integration "$SINCE" || retval=1 181 182 # cli 183 PYTHONPATH=$top_dir/cli 184 PYTHONPATH=$PYTHONPATH:$top_dir/signing 185 export PYTHONPATH 186 lint cli "$SINCE" || retval=1 187 188 # signing 189 PYTHONPATH=$top_dir/signing 190 export PYTHONPATH 191 lint signing "$SINCE" || retval=1 192 193 # sdk, rest api, xo, intkey 194 PYTHONPATH=$top_dir/sdk/python 195 PYTHONPATH=$PYTHONPATH:$top_dir/sdk/examples/intkey_python 196 PYTHONPATH=$PYTHONPATH:$top_dir/sdk/examples/xo_python 197 PYTHONPATH=$PYTHONPATH:$top_dir/signing 198 PYTHONPATH=$PYTHONPATH:$top_dir/cli 199 export PYTHONPATH 200 lint sdk/python "$SINCE" || retval=1 201 lint sdk/examples/intkey_python "$SINCE" || retval=1 202 lint sdk/examples/xo_python "$SINCE" || retval=1 203 lint rest_api "$SINCE" || retval=1 204 205 # settings, identity 206 PYTHONPATH=$top_dir/families/settings 207 PYTHONPATH=$top_dir/families/identity 208 PYTHONPATH=$top_dir/families/block_info 209 PYTHONPATH=$PYTHONPATH:$top_dir/signing 210 PYTHONPATH=$PYTHONPATH:$top_dir/sdk/python 211 export PYTHONPATH 212 lint families/settings "$SINCE" || retval=1 213 lint families/identity "$SINCE" || retval=1 214 215 # battleship 216 PYTHONPATH=$top_dir/families/battleship 217 PYTHONPATH=$PYTHONPATH:$top_dir/signing 218 PYTHONPATH=$PYTHONPATH:$top_dir/sdk/python 219 PYTHONPATH=$PYTHONPATH:$top_dir/validator 220 export PYTHONPATH 221 lint families/battleship "$SINCE" || retval=1 222 223 # block info 224 PYTHONPATH=$top_dir/families/block_info 225 PYTHONPATH=$PYTHONPATH:$top_dir/signing 226 PYTHONPATH=$PYTHONPATH:$top_dir/sdk/python 227 PYTHONPATH=$PYTHONPATH:$top_dir/validator 228 export PYTHONPATH 229 lint families/block_info "$SINCE" || retval=1 230 231 # poet 232 PYTHONPATH=$top_dir/consensus/poet/common 233 PYTHONPATH=$PYTHONPATH:$top_dir/consensus/poet/common/tests 234 export PYTHONPATH 235 lint consensus/poet/common "$SINCE" || retval=1 236 237 PYTHONPATH=$top_dir/signing 238 PYTHONPATH=$PYTHONPATH:$top_dir/validator 239 PYTHONPATH=$PYTHONPATH:$top_dir/consensus/poet/common 240 PYTHONPATH=$PYTHONPATH:$top_dir/consensus/poet/core 241 PYTHONPATH=$PYTHONPATH:$top_dir/consensus/poet/core/tests 242 PYTHONPATH=$PYTHONPATH:$top_dir/consensus/poet/simulator 243 export PYTHONPATH 244 lint consensus/poet/core "$SINCE" || retval=1 245 246 PYTHONPATH=$top_dir/sdk/python 247 PYTHONPATH=$PYTHONPATH:$top_dir/signing 248 PYTHONPATH=$PYTHONPATH:$top_dir/consensus/poet/common 249 PYTHONPATH=$PYTHONPATH:$top_dir/consensus/poet/families 250 PYTHONPATH=$PYTHONPATH:$top_dir/consensus/poet/families/tests 251 export PYTHONPATH 252 lint consensus/poet/families "$SINCE" || retval=1 253 254 PYTHONPATH=$top_dir/signing 255 PYTHONPATH=$PYTHONPATH:$top_dir/validator 256 PYTHONPATH=$PYTHONPATH:$top_dir/consensus/poet/common 257 PYTHONPATH=$PYTHONPATH:$top_dir/consensus/poet/sgx 258 PYTHONPATH=$PYTHONPATH:$top_dir/consensus/poet/sgx/tests 259 export PYTHONPATH 260 lint consensus/poet/sgx "$SINCE" || retval=1 261 262 PYTHONPATH=$top_dir/signing 263 PYTHONPATH=$PYTHONPATH:$top_dir/validator 264 PYTHONPATH=$PYTHONPATH:$top_dir/consensus/poet/common 265 PYTHONPATH=$PYTHONPATH:$top_dir/consensus/poet/simulator 266 PYTHONPATH=$PYTHONPATH:$top_dir/consensus/poet/simulator/tests 267 export PYTHONPATH 268 lint consensus/poet/simulator "$SINCE" || retval=1 269 270 PYTHONPATH=$top_dir/consensus/poet/cli 271 PYTHONPATH=$PYTHONPATH:$top_dir/signing 272 PYTHONPATH=$PYTHONPATH:$top_dir/validator 273 PYTHONPATH=$PYTHONPATH:$top_dir/consensus/poet/common 274 PYTHONPATH=$PYTHONPATH:$top_dir/consensus/poet/core 275 export PYTHONPATH 276 lint consensus/poet/cli "$SINCE" || retval=1 277 278 # utility 279 PYTHONPATH=$PYTHONPATH:$top_dir/signing 280 PYTHONPATH=$PYTHONPATH:$top_dir/utility/ias_proxy 281 PYTHONPATH=$PYTHONPATH:$top_dir/utility/ias_proxy/tests 282 PYTHONPATH=$PYTHONPATH:$top_dir/utility/ias_client 283 PYTHONPATH=$PYTHONPATH:$top_dir/consensus/poet/common 284 PYTHONPATH=$PYTHONPATH:$top_dir/consensus/poet/sgx 285 PYTHONPATH=$PYTHONPATH:$top_dir/sdk/python 286 export PYTHONPATH 287 lint utility/ias_proxy "$SINCE" || retval=1 288 289 PYTHONPATH=$PYTHONPATH:$top_dir/signing 290 PYTHONPATH=$PYTHONPATH:$top_dir/utility/ias_client 291 PYTHONPATH=$PYTHONPATH:$top_dir/utility/ias_client/tests 292 export PYTHONPATH 293 lint utility/ias_client "$SINCE" || retval=1 294 295 exit $retval