@@ -17,111 +17,5 @@ jobs:
1717
1818 - name : Check line length in PR changes
1919 run : |
20- # Get the base branch (usually main/master)
2120 BASE_BRANCH="${{ github.event.pull_request.base.ref }}"
22-
23- echo "Checking line length (max 80 characters) for changed files in " \
24- "src/, examples/, and native/ directories..."
25- echo "================================================================"
26-
27- # Create temporary files with unique names
28- changed_files=$(mktemp)
29- violations_file=$(mktemp)
30-
31- # Get all changed files in this PR and filter for target directories
32- git diff --name-only "origin/$BASE_BRANCH"...HEAD | \
33- grep -E '^(src/|examples/|native/)' > "$changed_files" || true
34-
35- # Initialize violation count
36- violation_count=0
37-
38- # Check each changed file
39- while IFS= read -r file; do
40- if [[ -f "$file" ]]; then
41- # Skip WolfSSLProvider.java...
42- # that legitimately exceed 80 characters
43- if [[ "$file" == "src/java/com/wolfssl/provider/jsse/WolfSSLProvider.java" ]]; then
44- echo " Skipping $file (contains security service mappings)"
45- continue
46- fi
47-
48- # Skip certificate and key files
49- if [[ "$file" =~ \.(pem|crt|cer|der|key)$ ]]; then
50- echo " Skipping $file (certificate/key file)"
51- continue
52- fi
53-
54- # Skip shell scripts (often have long command lines)
55- if [[ "$file" =~ \.sh$ ]]; then
56- echo " Skipping $file (shell script)"
57- continue
58- fi
59-
60- echo "Checking: $file"
61-
62- # Get added lines with actual file line numbers and check their length
63- new_line_num=0
64- git diff "origin/$BASE_BRANCH"...HEAD "$file" | \
65- while IFS= read -r line; do
66- # Track line numbers from diff headers - format: @@ -old_start,old_count +new_start,new_count @@
67- if [[ "$line" =~ ^@@.*\+([0-9]+) ]]; then
68- # Extract starting line number for new file (after +)
69- # Subtract 1 because we'll increment before processing first line
70- new_line_num=$((${BASH_REMATCH[1]} - 1))
71- elif [[ "$line" =~ ^(\+[^+].*) ]]; then
72- # This is an added line (not a +++ header)
73- # Increment line number BEFORE processing (since this line exists in new file)
74- new_line_num=$((new_line_num + 1))
75- added_line="${line:1}" # Remove leading +
76- char_count=${#added_line}
77-
78- # Skip JNI method signatures and calls to avoid false positives
79- # These are auto-generated names that can't be shortened
80- if [[ $char_count -gt 80 ]]; then
81- # Check if this is a JNI method signature, call, or parameter line that should be ignored
82- if [[ "$added_line" =~ JNIEXPORT.*JNICALL.*Java_com_wolfssl_ ]] || \
83- [[ "$added_line" =~ Java_com_wolfssl_.*\( ]] || \
84- [[ "$added_line" =~ ^[[:space:]]*return[[:space:]]+Java_com_wolfssl_.* ]] || \
85- [[ "$added_line" =~ ^[[:space:]]*\(JNIEnv\*[[:space:]]+env.*\) ]] || \
86- [[ "$added_line" =~ ^[[:space:]]*JNIEnv\*[[:space:]]+env.* ]]; then
87- echo " $file:$new_line_num - Skipping JNI method signature/call/parameters ($char_count characters)"
88- echo " Line: $added_line"
89- else
90- echo " $file:$new_line_num - Line too long ($char_count characters)"
91- echo " Line: $added_line"
92- echo "violation" >> "$violations_file"
93- fi
94- fi
95- elif [[ "$line" =~ ^[[:space:]] ]]; then
96- # Context line (unchanged) - increment new file line number
97- new_line_num=$((new_line_num + 1))
98- # Removed lines (starting with -) don't affect new file line numbers
99- fi
100- done
101- fi
102- done < "$changed_files"
103-
104- # Count violations
105- if [[ -f "$violations_file" ]]; then
106- violation_count=$(grep -c "violation" "$violations_file" || echo 0)
107- else
108- violation_count=0
109- fi
110-
111- echo "================================================================"
112-
113- if [[ $violation_count -gt 0 ]]; then
114- echo " Found $violation_count line(s) exceeding 80 " \
115- "characters in PR changes"
116- echo ""
117- echo "Please ensure all lines are 80 characters or less " \
118- "as per coding standards."
119- echo "You can check line length in your editor or use this command:"
120- echo " grep -n '.\{81,\}' <filename>"
121- rm -f "$violations_file" "$changed_files"
122- exit 1
123- else
124- echo "All changed lines are within the 80 character limit"
125- rm -f "$violations_file" "$changed_files"
126- exit 0
127- fi
21+ scripts/line-length-check-added-lines.sh "origin/$BASE_BRANCH"
0 commit comments