1
0
Fork 0
mirror of https://github.com/eclipse-cdt/cdt synced 2025-08-16 04:35:45 +02:00

[releng] Split up check_code_cleanliness script

As more checks have been added it has gotten a little unweildy.

The new script "do_all_code_cleanups.sh" now does most of the code
formatting checks.

Change-Id: I65fd888c88e1d7e470ed5621cee18ff3bf6680b4
This commit is contained in:
Jonah Graham 2020-08-30 20:02:35 -04:00
parent 0cb1f7482a
commit 6233337560
7 changed files with 192 additions and 153 deletions

View file

@ -8,161 +8,11 @@ set -e
DIR=$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )
${DIR}/check_features.sh
#!/bin/bash
##
# This script is reused by other projects, if so, COREPROJECT should be set
# to the project to use a basis for project settings
# The next set of scripts automatically apply formatting and other rules
# to CDT. At the end of this, git repo is checked for no diffs.
##
: ${COREPROJECT:=core/org.eclipse.cdt.core}
##
# Format code
##
: ${ECLIPSE:=~/buildtools/eclipse-SDK-4.13/eclipse}
test ! -e check_code_cleanliness_workspace
${ECLIPSE} \
-consolelog -nosplash -application org.eclipse.jdt.core.JavaCodeFormatter \
-config $PWD/$COREPROJECT/.settings/org.eclipse.jdt.core.prefs \
$PWD -data check_code_cleanliness_workspace
rm -rf check_code_cleanliness_workspace
##
# Remove trailing whitespace.
# The .gitattributes is used as a filter to identify files to check. Patters with
# this "# check trailing whitespace" on the line before are checked
##
awk '/# remove trailing whitespace/{getline; print $1}' .gitattributes |
while read i ; do
echo "Removing trailing whitespace on $i files"
git ls-files -- "$i" | xargs --no-run-if-empty sed -i 's/[ \t]*$//'
done
##
# Add all file types to .gitattributes
##
git ls-files | sed -E '-es@^.*/([^/]+)$@\1@' '-es@.+\.@\\\*\\.@' | sort -u | while read i ; do
if ! grep "^$i " .gitattributes > /dev/null
then
echo "MISSING $i in .gitattributes, adding as text, check if that is correct"
echo "$i text # automatically added - please verify" >> .gitattributes
fi
done
##
# Setup Eclipse Core Preferences
##
git ls-files -- \*\*/.project | while read i ; do
d=`dirname $i`;
mkdir -p $d/.settings
if ! test -e $d/.settings/org.eclipse.core.resources.prefs; then
echo 'eclipse.preferences.version=1' > $d/.settings/org.eclipse.core.resources.prefs
echo 'encoding/<project>=UTF-8' >> $d/.settings/org.eclipse.core.resources.prefs
fi
if ! grep 'encoding/<project>=UTF-8' $d/.settings/org.eclipse.core.resources.prefs > /dev/null; then
echo 'encoding/<project>=UTF-8' >> $d/.settings/org.eclipse.core.resources.prefs
fi
if ! grep 'eclipse.preferences.version=1' $d/.settings/org.eclipse.core.resources.prefs > /dev/null; then
echo 'eclipse.preferences.version=1' >> $d/.settings/org.eclipse.core.resources.prefs
fi
done
##
# Copy JDT/PDE preferences
##
git ls-files -- \*\*/.project ":!$COREPROJECT/.project" | while read i ; do
d=`dirname $i`;
natures=$(xmllint --xpath 'string(//projectDescription/natures)' $i)
mkdir -p $d/.settings
# JDT
if [[ $natures == *"org.eclipse.jdt.core.javanature"* ]]; then
cp $COREPROJECT/.settings/org.eclipse.jdt.* $d/.settings
# For test plug-ins we are more lenient so don't warn on some items
if echo $i | grep -E '\.tests?[/\.]' > /dev/null; then
sed -i \
'-es@org.eclipse.jdt.core.compiler.problem.nonExternalizedStringLiteral=warning@org.eclipse.jdt.core.compiler.problem.nonExternalizedStringLiteral=ignore@' \
'-es@org.eclipse.jdt.core.compiler.problem.discouragedReference=warning@org.eclipse.jdt.core.compiler.problem.discouragedReference=ignore@' \
'-es@org.eclipse.jdt.core.compiler.problem.deprecation=warning@org.eclipse.jdt.core.compiler.problem.deprecation=ignore@' \
'-es@org.eclipse.jdt.core.compiler.problem.discouragedReference=warning@org.eclipse.jdt.core.compiler.problem.discouragedReference=ignore@' \
'-es@org.eclipse.jdt.core.compiler.problem.emptyStatement=warning@org.eclipse.jdt.core.compiler.problem.emptyStatement=ignore@' \
'-es@org.eclipse.jdt.core.compiler.problem.fieldHiding=warning@org.eclipse.jdt.core.compiler.problem.fieldHiding=ignore@' \
'-es@org.eclipse.jdt.core.compiler.problem.finalParameterBound=warning@org.eclipse.jdt.core.compiler.problem.finalParameterBound=ignore@' \
'-es@org.eclipse.jdt.core.compiler.problem.forbiddenReference=error@org.eclipse.jdt.core.compiler.problem.forbiddenReference=warning@' \
'-es@org.eclipse.jdt.core.compiler.problem.uncheckedTypeOperation=warning@org.eclipse.jdt.core.compiler.problem.uncheckedTypeOperation=ignore@' \
'-es@org.eclipse.jdt.core.compiler.problem.unusedLocal=warning@org.eclipse.jdt.core.compiler.problem.unusedLocal=ignore@' \
'-es@org.eclipse.jdt.core.compiler.problem.unusedPrivateMember=warning@org.eclipse.jdt.core.compiler.problem.unusedPrivateMember=ignore@' \
'-es@org.eclipse.jdt.core.compiler.problem.potentialNullReference=warning@org.eclipse.jdt.core.compiler.problem.potentialNullReference=ignore@' \
'-es@org.eclipse.jdt.core.compiler.problem.rawTypeReference=warning@org.eclipse.jdt.core.compiler.problem.rawTypeReference=ignore@' \
'-es@org.eclipse.jdt.core.compiler.problem.incompleteEnumSwitch=warning@org.eclipse.jdt.core.compiler.problem.incompleteEnumSwitch=ignore@' \
$d/.settings/org.eclipse.jdt.core.prefs
fi
if echo $i | grep 'org.eclipse.cdt.examples.dsf' > /dev/null; then
sed -i \
'-es@org.eclipse.jdt.core.compiler.problem.nonExternalizedStringLiteral=warning@org.eclipse.jdt.core.compiler.problem.nonExternalizedStringLiteral=ignore@' \
$d/.settings/org.eclipse.jdt.core.prefs
fi
else
rm -f $d/.settings/org.eclipse.jdt*.prefs
fi
# PDE
if [[ $natures == *"org.eclipse.pde.PluginNature"* ]]; then
cp $COREPROJECT/.settings/org.eclipse.pde.prefs $d/.settings
cp $COREPROJECT/.settings/org.eclipse.pde.api.tools.prefs $d/.settings
if echo $i | grep -E '\.tests?[/\.]' > /dev/null; then
sed -i \
'-es@compilers.p.not-externalized-att=1@compilers.p.not-externalized-att=2@' \
$d/.settings/org.eclipse.pde.prefs
fi
else
rm -f $d/.settings/org.eclipse.pde*.prefs
fi
done
##
# Verify API Tooling is enabled for all non-test/example bundles
##
git ls-files -- \*\*/.project | while read i ; do
d=`dirname $i`;
natures=$(xmllint --xpath 'string(//projectDescription/natures)' $i)
if [[ $natures == *"org.eclipse.pde.PluginNature"* ]] && [[ $natures == *"org.eclipse.jdt.core.javanature"* ]]; then
if [[ $natures != *"org.eclipse.pde.api.tools.apiAnalysisNature"* ]]; then
if ! echo $i | grep -E '\.tests?[/\.]' > /dev/null && ! echo $i | grep -E '\.examples?[/\.]' > /dev/null; then
echo "$d is missing API Tools Nature - Turn it on in Eclipse by 1) Right-click project 2) Plug-in tools -> API Tools Setup"
exit 1
fi
fi
fi
done
##
# Make sure that natives are up to date
##
for p in native/org.eclipse.cdt.native.serial core/org.eclipse.cdt.core.native; do
echo "Rebuilding $p JNI headers to make sure they match source"
logfile=jni-headers-${p//\//-}.log
if ! ${MVN:-mvn} -B -V process-resources -DuseSimrelRepo -P jniheaders -f $p >${logfile} 2>&1; then
echo "Rebuilding of $p JNI headers failed. The log (${logfile}) is part of the artifacts of the build"
exit 1
fi
echo "Rebuilding $p natives to make sure they match source"
logfile=make-natives-${p//\//-}.log
if ! make -C $p/native_src rebuild >${logfile} 2>&1; then
echo "Rebuilding of $p natives failed. The log (${logfile}) is part of the artifacts of the build"
exit 1
fi
done
##
# Mark Windows binaries as executable
##
echo "Marking Windows binaries as executable"
git ls-files -- \*.exe \*.dll | while read line; do
chmod +x "$line"
done
${DIR}/do_all_code_cleanups.sh
##
# Check that none of the above caused any changes

View file

@ -0,0 +1,14 @@
#!/bin/bash
set -e
##
# Add all file types to .gitattributes
##
git ls-files | sed -E '-es@^.*/([^/]+)$@\1@' '-es@.+\.@\\\*\\.@' | sort -u | while read i ; do
if ! grep "^$i " .gitattributes > /dev/null
then
echo "MISSING $i in .gitattributes, adding as text, check if that is correct"
echo "$i text # automatically added - please verify" >> .gitattributes
fi
done

View file

@ -0,0 +1,10 @@
#!/bin/bash
set -e
DIR=$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )
${DIR}/do_format_code.sh
${DIR}/do_remove_trailing_whitespace.sh
${DIR}/do_add_all_file_types_to_gitattributes.sh
${DIR}/do_project_settings.sh
${DIR}/do_rebuild_natives.sh

View file

@ -0,0 +1,23 @@
#!/bin/bash
set -e
##
# This script is reused by other projects, if so, COREPROJECT should be set
# to the project to use a basis for project settings
##
: ${COREPROJECT:=core/org.eclipse.cdt.core}
##
# Format code
##
: ${ECLIPSE:=~/buildtools/eclipse-SDK-4.13/eclipse}
if test -e check_code_cleanliness_workspace; then
echo check_code_cleanliness_workspace needs to be deleted
exit 1
fi
${ECLIPSE} \
-consolelog -nosplash -application org.eclipse.jdt.core.JavaCodeFormatter \
-config $PWD/$COREPROJECT/.settings/org.eclipse.jdt.core.prefs \
$PWD -data check_code_cleanliness_workspace
rm -rf check_code_cleanliness_workspace

View file

@ -0,0 +1,98 @@
#!/bin/bash
set -e
##
# This script is reused by other projects, if so, COREPROJECT should be set
# to the project to use a basis for project settings
##
: ${COREPROJECT:=core/org.eclipse.cdt.core}
##
# Setup Eclipse Core Preferences
##
git ls-files -- \*\*/.project | while read i ; do
d=`dirname $i`;
mkdir -p $d/.settings
if ! test -e $d/.settings/org.eclipse.core.resources.prefs; then
echo 'eclipse.preferences.version=1' > $d/.settings/org.eclipse.core.resources.prefs
echo 'encoding/<project>=UTF-8' >> $d/.settings/org.eclipse.core.resources.prefs
fi
if ! grep 'encoding/<project>=UTF-8' $d/.settings/org.eclipse.core.resources.prefs > /dev/null; then
echo 'encoding/<project>=UTF-8' >> $d/.settings/org.eclipse.core.resources.prefs
fi
if ! grep 'eclipse.preferences.version=1' $d/.settings/org.eclipse.core.resources.prefs > /dev/null; then
echo 'eclipse.preferences.version=1' >> $d/.settings/org.eclipse.core.resources.prefs
fi
done
##
# Copy JDT/PDE preferences
##
git ls-files -- \*\*/.project ":!$COREPROJECT/.project" | while read i ; do
d=`dirname $i`;
natures=$(xmllint --xpath 'string(//projectDescription/natures)' $i)
mkdir -p $d/.settings
# JDT
if [[ $natures == *"org.eclipse.jdt.core.javanature"* ]]; then
cp $COREPROJECT/.settings/org.eclipse.jdt.* $d/.settings
# For test plug-ins we are more lenient so don't warn on some items
if echo $i | grep -E '\.tests?[/\.]' > /dev/null; then
sed -i \
'-es@org.eclipse.jdt.core.compiler.problem.nonExternalizedStringLiteral=warning@org.eclipse.jdt.core.compiler.problem.nonExternalizedStringLiteral=ignore@' \
'-es@org.eclipse.jdt.core.compiler.problem.discouragedReference=warning@org.eclipse.jdt.core.compiler.problem.discouragedReference=ignore@' \
'-es@org.eclipse.jdt.core.compiler.problem.deprecation=warning@org.eclipse.jdt.core.compiler.problem.deprecation=ignore@' \
'-es@org.eclipse.jdt.core.compiler.problem.discouragedReference=warning@org.eclipse.jdt.core.compiler.problem.discouragedReference=ignore@' \
'-es@org.eclipse.jdt.core.compiler.problem.emptyStatement=warning@org.eclipse.jdt.core.compiler.problem.emptyStatement=ignore@' \
'-es@org.eclipse.jdt.core.compiler.problem.fieldHiding=warning@org.eclipse.jdt.core.compiler.problem.fieldHiding=ignore@' \
'-es@org.eclipse.jdt.core.compiler.problem.finalParameterBound=warning@org.eclipse.jdt.core.compiler.problem.finalParameterBound=ignore@' \
'-es@org.eclipse.jdt.core.compiler.problem.forbiddenReference=error@org.eclipse.jdt.core.compiler.problem.forbiddenReference=warning@' \
'-es@org.eclipse.jdt.core.compiler.problem.uncheckedTypeOperation=warning@org.eclipse.jdt.core.compiler.problem.uncheckedTypeOperation=ignore@' \
'-es@org.eclipse.jdt.core.compiler.problem.unusedLocal=warning@org.eclipse.jdt.core.compiler.problem.unusedLocal=ignore@' \
'-es@org.eclipse.jdt.core.compiler.problem.unusedPrivateMember=warning@org.eclipse.jdt.core.compiler.problem.unusedPrivateMember=ignore@' \
'-es@org.eclipse.jdt.core.compiler.problem.potentialNullReference=warning@org.eclipse.jdt.core.compiler.problem.potentialNullReference=ignore@' \
'-es@org.eclipse.jdt.core.compiler.problem.rawTypeReference=warning@org.eclipse.jdt.core.compiler.problem.rawTypeReference=ignore@' \
'-es@org.eclipse.jdt.core.compiler.problem.incompleteEnumSwitch=warning@org.eclipse.jdt.core.compiler.problem.incompleteEnumSwitch=ignore@' \
$d/.settings/org.eclipse.jdt.core.prefs
fi
if echo $i | grep 'org.eclipse.cdt.examples.dsf' > /dev/null; then
sed -i \
'-es@org.eclipse.jdt.core.compiler.problem.nonExternalizedStringLiteral=warning@org.eclipse.jdt.core.compiler.problem.nonExternalizedStringLiteral=ignore@' \
$d/.settings/org.eclipse.jdt.core.prefs
fi
else
rm -f $d/.settings/org.eclipse.jdt*.prefs
fi
# PDE
if [[ $natures == *"org.eclipse.pde.PluginNature"* ]]; then
cp $COREPROJECT/.settings/org.eclipse.pde.prefs $d/.settings
cp $COREPROJECT/.settings/org.eclipse.pde.api.tools.prefs $d/.settings
if echo $i | grep -E '\.tests?[/\.]' > /dev/null; then
sed -i \
'-es@compilers.p.not-externalized-att=1@compilers.p.not-externalized-att=2@' \
$d/.settings/org.eclipse.pde.prefs
fi
else
rm -f $d/.settings/org.eclipse.pde*.prefs
fi
done
##
# Verify API Tooling is enabled for all non-test/example bundles
##
git ls-files -- \*\*/.project | while read i ; do
d=`dirname $i`;
natures=$(xmllint --xpath 'string(//projectDescription/natures)' $i)
if [[ $natures == *"org.eclipse.pde.PluginNature"* ]] && [[ $natures == *"org.eclipse.jdt.core.javanature"* ]]; then
if [[ $natures != *"org.eclipse.pde.api.tools.apiAnalysisNature"* ]]; then
if ! echo $i | grep -E '\.tests?[/\.]' > /dev/null && ! echo $i | grep -E '\.examples?[/\.]' > /dev/null; then
echo "$d is missing API Tools Nature - Turn it on in Eclipse by 1) Right-click project 2) Plug-in tools -> API Tools Setup"
exit 1
fi
fi
fi
done

View file

@ -0,0 +1,30 @@
#!/bin/bash
set -e
##
# Make sure that natives are up to date
##
for p in native/org.eclipse.cdt.native.serial core/org.eclipse.cdt.core.native; do
echo "Rebuilding $p JNI headers to make sure they match source"
logfile=jni-headers-${p//\//-}.log
if ! ${MVN:-mvn} -B -V process-resources -DuseSimrelRepo -P jniheaders -f $p >${logfile} 2>&1; then
echo "Rebuilding of $p JNI headers failed. The log (${logfile}) is part of the artifacts of the build"
exit 1
fi
echo "Rebuilding $p natives to make sure they match source"
logfile=make-natives-${p//\//-}.log
if ! make -C $p/native_src rebuild >${logfile} 2>&1; then
echo "Rebuilding of $p natives failed. The log (${logfile}) is part of the artifacts of the build"
exit 1
fi
done
##
# Mark Windows binaries as executable
##
echo "Marking Windows binaries as executable"
git ls-files -- \*.exe \*.dll | while read line; do
chmod +x "$line"
done

View file

@ -0,0 +1,14 @@
#!/bin/bash
set -e
##
# Remove trailing whitespace.
# The .gitattributes is used as a filter to identify files to check. Patters with
# this "# check trailing whitespace" on the line before are checked
##
awk '/# remove trailing whitespace/{getline; print $1}' .gitattributes |
while read i ; do
echo "Removing trailing whitespace on $i files"
git ls-files -- "$i" | xargs --no-run-if-empty sed -i 's/[ \t]*$//'
done