Skip to main content
summaryrefslogtreecommitdiffstats
blob: f33b61119d3e34749d068669b51e7cd1bc53dba9 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
#!/bin/bash

###
# This script is run automatically as part of gerrit validation jobs
# to ensure that coding standards have been followed. It can also be
# used to make code follow standards again.
#
# The overall design is to apply a number of fixes (formatting, trim
# whitespace, etc) and then check if there are any modifications
# in git.
###

set -e

##
# Format code
##
: ${ECLIPSE:=~/buildtools/eclipse-SDK-4.9/eclipse}
test ! -e check_code_cleanliness_workspace
${ECLIPSE} \
    -consolelog -nosplash -application org.eclipse.jdt.core.JavaCodeFormatter \
    -config $PWD/core/org.eclipse.cdt.core/.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"
        find .  ! -path "./.git/*" -type f -name "$i" -exec sed -i 's/[ \t]*$//' {} +; \
    done

##
# Add all file types to .gitattributes
##
find . ! -path "./.git/*" -type f -printf "%f\n"  | sed -E -e 's/.+\./\\\*\\./'  | 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

##
# Copy JDT/PDE preferences
##
find . ! -path "./.git/*" -name .project ! -path './core/org.eclipse.cdt.core/.project' | while read i ; do
    d=`dirname $i`;
    if test ! -e $d/feature.xml; then
        mkdir -p $d/.settings
        cp core/org.eclipse.cdt.core/.settings/org.eclipse.jdt.* core/org.eclipse.cdt.core/.settings/org.eclipse.pde.* $d/.settings
        # For test plug-ins, don't warn on missing NLS
        if echo $i | grep '\.tests[/\.]' > /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
    fi
done

##
# Check that none of the above caused any changes
##
if test -z "$(git status -s)"; then
    echo "Tree looks clean!"
else
    echo "Tree is dirty - something needs to be cleaned up in your commit"
    echo "Result of git status"
    git status
    echo "Result of git diff"
    git diff
    echo "Tree is dirty - something needs to be cleaned up in your commit (see above for git status/diff)"
    exit 1
fi

Back to the top