- Introduced a .clang-format file to enforce Google C++ style guidelines across the codebase. - Updated CMakeLists.txt to include custom targets for formatting and format-checking using clang-format. - Added a quality_check.sh script to automate code quality checks, including formatting and static analysis with cppcheck. - Enhanced CMakePresets.json with new macOS-specific configurations for ARM64 and universal binaries, improving build flexibility and support.
55 lines
2.0 KiB
Bash
Executable File
55 lines
2.0 KiB
Bash
Executable File
#!/bin/bash
|
|
|
|
# Quality check script for YAZE codebase
|
|
# This script runs various code quality checks to ensure CI/CD pipeline passes
|
|
|
|
set -e
|
|
|
|
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
PROJECT_ROOT="$(cd "${SCRIPT_DIR}/.." && pwd)"
|
|
|
|
cd "${PROJECT_ROOT}"
|
|
|
|
echo "🔍 Running code quality checks for YAZE..."
|
|
|
|
# Check if required tools are available
|
|
command -v clang-format >/dev/null 2>&1 || { echo "❌ clang-format not found. Please install it."; exit 1; }
|
|
command -v cppcheck >/dev/null 2>&1 || { echo "❌ cppcheck not found. Please install it."; exit 1; }
|
|
|
|
# Create .clang-format config if it doesn't exist
|
|
if [ ! -f .clang-format ]; then
|
|
echo "📝 Creating .clang-format configuration..."
|
|
clang-format --style=Google --dump-config > .clang-format
|
|
fi
|
|
|
|
echo "✅ Code formatting check..."
|
|
# Check formatting without modifying files
|
|
FORMATTING_ISSUES=$(find src test -name "*.cc" -o -name "*.h" | head -50 | xargs clang-format --dry-run --Werror --style=Google 2>&1 || true)
|
|
if [ -n "$FORMATTING_ISSUES" ]; then
|
|
echo "⚠️ Formatting issues found. Run 'make format' to fix them."
|
|
echo "$FORMATTING_ISSUES" | head -20
|
|
else
|
|
echo "✅ All files are properly formatted"
|
|
fi
|
|
|
|
echo "🔍 Running static analysis..."
|
|
# Run cppcheck on main source directories
|
|
cppcheck --enable=all --error-exitcode=0 \
|
|
--suppress=missingIncludeSystem \
|
|
--suppress=unusedFunction \
|
|
--suppress=unmatchedSuppression \
|
|
--suppress=unreadVariable \
|
|
--suppress=cstyleCast \
|
|
--suppress=variableScope \
|
|
src/ 2>&1 | head -30
|
|
|
|
echo "✅ Quality checks completed!"
|
|
echo ""
|
|
echo "💡 To fix formatting issues automatically, run:"
|
|
echo " find src test -name '*.cc' -o -name '*.h' | xargs clang-format -i --style=Google"
|
|
echo ""
|
|
echo "💡 For CI/CD pipeline compatibility, ensure:"
|
|
echo " - All formatting issues are resolved"
|
|
echo " - absl::Status return values are handled with RETURN_IF_ERROR() or PRINT_IF_ERROR()"
|
|
echo " - Use Google C++ style for consistency"
|