From d892f934bf70958782a0733b3ed77cc87847486c Mon Sep 17 00:00:00 2001 From: lvsi <15239928381@163.com> Date: Thu, 29 Feb 2024 15:26:07 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E6=96=B0=E5=A2=9Escan=E6=89=AB?= =?UTF-8?q?=E6=8F=8F=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .env.example | 3 +++ README.md | 27 +++++++++++++++++++++++---- install.sh | 8 ++++++++ posture | 37 ++++++++++++++++++++++++++++++++++++- 4 files changed, 70 insertions(+), 5 deletions(-) diff --git a/.env.example b/.env.example index 53f7288..d229136 100644 --- a/.env.example +++ b/.env.example @@ -6,3 +6,6 @@ loadingSpeed=4 # the protect rules protectMainSwitch="off" + +# default scan config +scan_keywords=("密码" "password" "passwd" "psd" "apikey" "api_key" "api-key" "api_secret" "apisecret" "api-secret" "api_token" "apitoken" "api-token" "token") diff --git a/README.md b/README.md index d0d820d..cfe267a 100644 --- a/README.md +++ b/README.md @@ -17,7 +17,7 @@

-
+ # 一、项目介绍 posture是一个轻量可扩展的开发姿势监督与矫正工具,让您快速开始以正确的规范编写和管理代码,解决团队开发时代码百花齐放、Git提交信息乱写、Git误操作等一系列开发中的"姿势不正确"问题。 @@ -59,7 +59,7 @@ git clone https://github.com/WGrape/posture.git && cd posture && bash ./install. image
-在安装成功后,会在您的```~/.bash_profile```文件中写入如下内容,自动创建```$POSTURE_PATH```变量并添加到```$PATH```变量中,以确保您可以开始使用posture工具。 +在安装成功后,会在您的posture项目安装目录下生成一个```.env```环境配置文件,用于对posture的一些行为控制。另外在```~/.bash_profile```文件中写入如下内容,自动创建```$POSTURE_PATH```变量并添加到```$PATH```变量中,以确保您可以开始使用posture工具。 ```bash # Here is the config of posture @@ -67,6 +67,8 @@ export POSTURE_PATH={{the path of posture installation}} export PATH=$PATH:${POSTURE_PATH} ``` +这样,之后就可以通过```echo $POSTURE_PATH```命令查看posture的安装目录。 + # 三、如何使用 ## 1、矫正开发姿势 @@ -92,7 +94,24 @@ git config --global --add core.fileMode false 在执行完```adjust```命令后,在您的项目根目录下,会生成一个```.editorconfig```文件,它会为您的IDE设置统一的代码规范。 -## 2、设置全局钩子 +## 2、扫描项目 +在开发的任何阶段,都可以使用如下命令快速扫描我们的任何项目,对一些关键字比如"密码"等进行扫描,防止出现安全性问题。 + +```bash +cd {your_project} # notice: not cd posture project ! + +posture scan +``` + +在```posture```安装路径下的```.env```配置文件中有定义```scan_keywords```关键字数组,我们把需要检查的关键字输入进去,就可以实现自定义的扫描关键字需求。 + +
+ 查看使用示例 + image + image +
+ +## 3、设置全局钩子 在开发前,请使用如下命令设置全局钩子。这样无论在哪个项目下,当使用git命令时,相应的钩子都会自动工作,实时监督我们在git流程中的操作,一旦出现姿势错误的情况,就会即时发出提醒并中断操作。 ```bash diff --git a/install.sh b/install.sh index 6e66b76..602caf7 100755 --- a/install.sh +++ b/install.sh @@ -4,6 +4,12 @@ chmod a+x ./posture chmod a+x ./uninstall.sh currentDir=$(pwd) +# copy ./.env.example to ./.env +if [ ! -f "$currentDir/.env" ]; then + cp "$currentDir/.env.example" "$currentDir/.env" +fi + +# write POSTURE_PATH to ~/.bash_profile if grep -qF 'export POSTURE_PATH=' ~/.bash_profile; then echo "please clear installed data of posture in your ~/.bash_profile" exit 1 @@ -13,4 +19,6 @@ echo "# Here is the config of posture" >> ~/.bash_profile echo "export POSTURE_PATH=${currentDir}" >> ~/.bash_profile echo "export PATH=\$PATH:\$POSTURE_PATH" >> ~/.bash_profile source ~/.bash_profile &> /dev/null + +# install end echo "install successfully" diff --git a/posture b/posture index 1da0b29..540189e 100755 --- a/posture +++ b/posture @@ -49,7 +49,42 @@ hook() { } scan() { - + project_path=$(pwd) + file_list=$(find . -maxdepth 1) + find_count=0 + + i=0 + for file in $file_list; do + if [ "$file" == "." ] || [ "$file" == ".." ] || [ "$file" == "./.idea" ] || [ "$file" == "./.DS_Store" ]; then + continue + fi + + ((i=i+1)) + if [ -d "$file" ]; then + printf "[$i] scan dir:$file\n\n" + else + printf "[$i] scan file:$file\n\n" + fi + + for keyword in "${scan_keywords[@]}" + do + grep_result=$(grep -ri "$keyword" "$file") + + if [ -n "$grep_result" ]; then + ((find_count=find_count+1)) + printf "${find_count}. keyword '$keyword' find:\n" + print_warn "$grep_result\n\n" + fi + done + done + + if [ "$find_count" != 0 ]; then + print_error "Find some keywords, you must go to check your codes.\n" + return 1 + else + print_ok "Not find any keywords, your codes is safety.\n" + return 0 + fi } # start to cancel the global hook