You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
128 lines
4.4 KiB
128 lines
4.4 KiB
#!/bin/bash
|
|
|
|
# Copyright (c) 2020 PaddlePaddle Authors. All Rights Reserved.
|
|
#
|
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
# you may not use this file except in compliance with the License.
|
|
# You may obtain a copy of the License at
|
|
#
|
|
# http://www.apache.org/licenses/LICENSE-2.0
|
|
#
|
|
# Unless required by applicable law or agreed to in writing, software
|
|
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
# See the License for the specific language governing permissions and
|
|
# limitations under the License.
|
|
|
|
# This script is used to grep invalid PADDLE checks by directory or file in the paddle/fluid/,
|
|
# the result show all invalid PADDLE checks in specified directory or file.
|
|
|
|
# Usage:
|
|
# - bash grep_invalid_enforce.sh [target directory or file] (run in tools directory)
|
|
# - The default check path is paddle/fluid/operators
|
|
|
|
# Result Examples:
|
|
# 1. grep invalid PADDLE checks in directory
|
|
|
|
# - Command: /work/paddle/tools {develop} bash grep_invalid_enforce.sh ../paddle/fluid/imperative
|
|
# - Results:
|
|
# - paddle/fluid/imperative/gradient_accumulator.cc
|
|
# PADDLE_ENFORCE_EQ(dst_tensor->numel() == numel, true,
|
|
# "dst_numel %d vs. src_numel %d", dst_tensor->numel(),
|
|
# numel);
|
|
|
|
# - paddle/fluid/imperative/nccl_context.cc
|
|
# PADDLE_ENFORCE_EQ(addr.size(), 2UL,
|
|
# "The endpoint should contain host and port: %s", ep);
|
|
# PADDLE_THROW("create server fd failed");
|
|
# PADDLE_THROW("set socket opt failed");
|
|
# PADDLE_THROW("binding failed on ep: %s", ep);
|
|
# PADDLE_THROW("listen on server fd failed");
|
|
# PADDLE_THROW("accept the new socket fd failed");
|
|
# PADDLE_THROW("reading the ncclUniqueId from socket failed");
|
|
# PADDLE_ENFORCE_EQ(addr.size(), 2UL,
|
|
# "The endpoint should contain host and port: %s", ep);
|
|
# PADDLE_THROW("create socket failed");
|
|
# PADDLE_THROW("invalied address: %s", ep);
|
|
|
|
# - paddle/fluid/imperative/jit/program_desc_tracer.cc
|
|
# PADDLE_ENFORCE_NOT_NULL(new_var);
|
|
# PADDLE_ENFORCE_EQ(inner_var.IsInitialized(), true);
|
|
# PADDLE_THROW("Not support variable type %s",
|
|
# framework::ToTypeName(inner_var.Type()));
|
|
|
|
# 2. grep invalid PADDLE checks in file
|
|
|
|
# - Command: /work/paddle/tools {develop} bash grep_invalid_enforce.sh ../paddle/fluid/pybind/reader_py.cc
|
|
# - Results:
|
|
# - paddle/fluid/pybind/reader_py.cc
|
|
# PADDLE_THROW(
|
|
# "Place cannot be CUDAPlace when use_double_buffer is False");
|
|
# PADDLE_ENFORCE_NOT_NULL(exceptions_[i]);
|
|
# PADDLE_ENFORCE_EQ(status, Status::kException);
|
|
# PADDLE_ENFORCE_EQ(status, Status::kSuccess);
|
|
|
|
. ./count_enforce_by_file.sh --source-only
|
|
|
|
ROOT_DIR=../paddle/fluid/operators
|
|
|
|
if [ "$1" != "" ]; then
|
|
ROOT_DIR=$1
|
|
fi
|
|
|
|
function enforce_grep(){
|
|
paddle_check=`grep -zoE "(PADDLE_ENFORCE[A-Z_]{0,9}|PADDLE_THROW)\(.[^,\);]*.[^;]*\);\s" $1 || true`
|
|
valid_check=`echo "$paddle_check" | grep -zoE '(PADDLE_ENFORCE[A-Z_]{0,9}|PADDLE_THROW)\((.[^,;]+,)*.[^";]*(errors::).[^"]*".[^";]{20,}.[^;]*\);\s' || true`
|
|
invalid_check=`echo "$paddle_check" | grep -vxF "$valid_check" || true`
|
|
if [ "${invalid_check}" != "" ];then
|
|
file_path=$1
|
|
echo -e "\n- ${file_path#../}"
|
|
echo "${invalid_check}"
|
|
fi
|
|
}
|
|
|
|
function grep_file_recursively(){
|
|
local i=0
|
|
local dir_array
|
|
for file in `ls $1`
|
|
do
|
|
if [ -f $1"/"$file ];then
|
|
in_white_list=$(echo $FILE_WHITE_LIST | grep "${file}")
|
|
if [[ "$in_white_list" == "" ]];then
|
|
enforce_grep $1"/"$file
|
|
fi
|
|
fi
|
|
if [ -d $1"/"$file ];then
|
|
dir_array[$i]=$1"/"$file
|
|
((i++))
|
|
fi
|
|
done
|
|
for sub_dir_name in ${dir_array[@]}
|
|
do
|
|
grep_file_recursively $sub_dir_name
|
|
done
|
|
}
|
|
|
|
function grep_file(){
|
|
file_path=$1
|
|
file_name=`echo ${file_path##*/} `
|
|
if [ -f $file_path ];then
|
|
in_white_list=$(echo $FILE_WHITE_LIST | grep "${file_name}")
|
|
if [[ "$in_white_list" == "" ]];then
|
|
enforce_grep $file_path
|
|
fi
|
|
fi
|
|
}
|
|
|
|
main() {
|
|
if [ -f $ROOT_DIR ];then
|
|
grep_file $ROOT_DIR
|
|
else
|
|
grep_file_recursively $ROOT_DIR
|
|
fi
|
|
}
|
|
|
|
if [ "${1}" != "--source-only" ]; then
|
|
main "${@}"
|
|
fi
|