Skip to content
This repository was archived by the owner on Mar 12, 2025. It is now read-only.

Commit 07fe553

Browse files
committed
add check style ci
1 parent 2c8fac8 commit 07fe553

2 files changed

Lines changed: 155 additions & 0 deletions

File tree

.github/workflows/check-style.yml

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
name: 'Code Style Checker'
2+
description: 'Check code style for different programming languages.'
3+
4+
on:
5+
push:
6+
branches:
7+
- master
8+
pull_request:
9+
branches:
10+
- master
11+
12+
jobs:
13+
run-script:
14+
runs-on: ubuntu-latest
15+
steps:
16+
- name: Checkout code
17+
uses: actions/checkout@v2
18+
19+
- name: Install dependencies
20+
run: |
21+
sudo apt-get update
22+
sudo apt-get install jq
23+
24+
- name: Run the script
25+
env:
26+
INPUT_URL: 'https://openrouter.ai/api/v1/chat/completions'
27+
INPUT_API_KEY: '${{ secrets.CHECK_STYLE_API_KEY }}'
28+
INPUT_MODEL: 'deepseek/deepseek-chat'
29+
INPUT_REPO_PATH: '${{ github.workspace }}'
30+
run: bash ./checker.sh

checker.sh

Lines changed: 125 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,125 @@
1+
#!/bin/bash
2+
3+
url=${INPUT_URL}
4+
api_key=${INPUT_API_KEY}
5+
model=${INPUT_MODEL}
6+
repo_path=${INPUT_REPO_PATH}
7+
8+
if [ ! $url ]; then
9+
echo "url is required"
10+
exit -1
11+
fi
12+
13+
if [ ! $api_key ]; then
14+
echo "api key is required"
15+
exit -2
16+
fi
17+
18+
if [ ! -d "$repo_path" ]; then
19+
echo "repo path does not exist"
20+
exit -3
21+
fi
22+
23+
if [ ! $model ]; then
24+
echo "model is required"
25+
exit -4
26+
fi
27+
28+
function check_code(){
29+
code=$(cat "$1")
30+
system_message='You are a '${2}' code style evaluator that checks code against style guidelines.
31+
EXAMPLE JSON OUTPUT:
32+
{
33+
\"violations\": [
34+
{ \"line number\": \"reason\" },
35+
{ \"line number\": \"reason\" },
36+
],
37+
\"score\":0
38+
}'
39+
40+
user_message="Style Guide:
41+
42+
${3}
43+
44+
Code to evaluate:
45+
46+
${code}"
47+
user_message=$(echo $user_message | sed 's/{/\\{/g' | sed 's/}/\\}/g' | sed 's/\"/\\"/g' | sed 's/\\\\"/\\"/g')
48+
49+
json='{
50+
"response_format": {"type": "json_object"},
51+
"model": "'$model'",
52+
"messages": [
53+
{"role": "system", "content": "'$system_message'"},
54+
{"role": "user", "content": "'$user_message'"}
55+
],
56+
"stream": false
57+
}'
58+
59+
response=$(curl -s -X POST "$url" \
60+
-H "Content-Type: application/json" \
61+
-H "Authorization: Bearer $api_key" \
62+
--data "${json}")
63+
64+
echo $1
65+
# 检查是否有错误
66+
error=$(echo $response | jq -r '.error // empty')
67+
if [ ! -z "$error" ]; then
68+
echo "Error: $error"
69+
continue
70+
fi
71+
72+
# 提取内容
73+
content=$(echo $response | jq -r '.choices[0].message.content // "No content found"')
74+
echo "$content"
75+
}
76+
77+
files=$(git ls-files '*.rs')
78+
for file in ${files[*]}
79+
do
80+
check_code $file "Rust" "Rust"
81+
done
82+
83+
files=$(git ls-files '*.go')
84+
for file in ${files[*]}
85+
do
86+
check_code $file "Golang" "Golang"
87+
done
88+
89+
files=$(git ls-files '*.py')
90+
for file in ${files[*]}
91+
do
92+
check_code $file "Python" "Python"
93+
done
94+
95+
files=$(git ls-files '*.js')
96+
for file in ${files[*]}
97+
do
98+
check_code $file "JavaScript" "JavaScript"
99+
done
100+
101+
files=$(git ls-files '*.ts')
102+
for file in ${files[*]}
103+
do
104+
check_code $file "TypeScript" "TypeScript"
105+
done
106+
107+
files=$(git ls-files '*.sol')
108+
for file in ${files[*]}
109+
do
110+
check_code $file "Solidity" "Solidity"
111+
done
112+
113+
files=$(git ls-files '*.cpp')
114+
for file in ${files[*]}
115+
do
116+
check_code $file "C++" "Google C++"
117+
done
118+
119+
files=$(git ls-files '*.h')
120+
for file in ${files[*]}
121+
do
122+
check_code $file "C++" "Google C++"
123+
done
124+
125+
exit 0

0 commit comments

Comments
 (0)