Skip to content

Commits on Source 5

......@@ -2,6 +2,6 @@ ATTENTION:
All scripts in this folder expect to be launched from root folder of repository
Example of usage:
export GOAL="all-sevntu-checks" && ./.ci/travis/travis.sh
./.ci/travis/travis.sh all-sevntu-checks
export TRAVIS_PULL_REQUEST="" && export GOAL="releasenotes-gen" && ./.ci/travis/travis.sh
export TRAVIS_PULL_REQUEST="" && ./.ci/travis/travis.sh releasenotes-gen
@echo off
::----------------------------------------------------------------------
:: Appveyor bat file to run on local for windows users.
:: Example of usage
:: ./.ci/appveyor.bat verify_without_checkstyle
::----------------------------------------------------------------------
SET OPTION=%1
if "%OPTION%" == "sevntu" (
mvn -e verify -DskipTests -DskipITs -Dpmd.skip=true^
-Dspotbugs.skip=true -Djacoco.skip=true -Dxml.skip=true
goto :END_CASE
)
if "%OPTION%" == "verify_without_checkstyle" (
mvn -e verify -Dcheckstyle.ant.skip=true -Dcheckstyle.skip=true
goto :END_CASE
)
if "%OPTION%" == "verify_without_checkstyle_JDK11" (
mvn -e verify -Dcheckstyle.ant.skip=true -Dcheckstyle.skip=true
goto :END_CASE
)
:: powermock doesn't support modifying final fields in JDK12
if "%OPTION%" == "verify_without_checkstyle_JDK12" (
mvn -e verify -Dcheckstyle.ant.skip=true -Dcheckstyle.skip=true^
-Dtest=!FileContentsTest#testGetJavadocBefore,!FileTextTest#testFindLine*,^
!MainFrameModelPowerTest#testOpenFileWithUnknownParseMode,^
!TokenUtilTest#testTokenValueIncorrect2,^
!ImportControlLoaderPowerTest#testInputStreamThatFailsOnClose^
-Djacoco.skip=true
goto :END_CASE
)
if "%OPTION%" == "site_without_verify" (
mvn -e -Pno-validations site
goto :END_CASE
)
:: powermock doesn't support modifying final fields in JDK12
if "%OPTION%" == "site_without_verify_jdk12" (
mvn -e -Pno-validations site^
-Dtest=!FileContentsTest#testGetJavadocBefore,!FileTextTest#testFindLine*,^
!MainFrameModelPowerTest#testOpenFileWithUnknownParseMode,^
!TokenUtilTest#testTokenValueIncorrect2,^
!ImportControlLoaderPowerTest#testInputStreamThatFailsOnClose^
-Djacoco.skip=true
goto :END_CASE
)
echo Unexpected argument %OPTION%
goto :END_CASE
:END_CASE
VER > NUL
EXIT
#!/bin/bash
#This script is used at distelli-manifest.yml
#Run "firefox target/site/checkstyle.html" after completion to review html report
set -e
uname -a
mvn --version
mvn -B -e clean install -Pno-validations
git clone https://github.com/checkstyle/contribution && cd contribution/checkstyle-tester
sed -i.'' 's/^guava/#guava/' projects-to-test-on.properties
sed -i.'' 's/#spring-framework/spring-framework/' projects-to-test-on.properties
sed -i.'' 's/#nbia-dcm4che-tools/nbia-dcm4che-tools/' projects-to-test-on.properties
sed -i.'' 's/#spotbugs/spotbugs/' projects-to-test-on.properties
sed -i.'' 's/#pmd/pmd/' projects-to-test-on.properties
sed -i.'' 's/#apache-ant/apache-ant/' projects-to-test-on.properties
./launch.sh -Dcheckstyle.config.location=checks-only-javadoc-error.xml
if grep "Got an exception" target/site/checkstyle.html; then
echo "[ERROR] Exceptions detected"
exit 1
else
echo "[INFO] Finished without exceptions"
exit 0
fi
#!/bin/bash
# Attention, there is no "-x" to avoid problems on Travis
set -e
DEBUG=true
# result of command goes to $RUN_JOB
# 0 = not run (skip)
# 1 = run (no skip)
function should_run_job {
local SKIP_JOB_BY_FILES=$1
local SKIP_FILES=$2
## OUT is needed to display the result of the commands for debugging
## because some CIs don't like them being executed directly
local OUT=""
echo "Initial value of SKIP_JOB_BY_FILES: $SKIP_JOB_BY_FILES"
echo "Files that are allowed to be skipped: $SKIP_FILES"
if [[ $SKIP_JOB_BY_FILES != 'false' ]]; then
if [[ $DEBUG == "true" ]]; then
OUT=`git log -10 --format="%h %B"`
echo "Current Branch log: $OUT"
OUT=`git log origin/master -10 --format="%h %B"`
echo "origin/master log: $OUT"
fi
## Travis merges the PR commit into origin/master
## This identifies the PR's original commit
## if it notices a merge commit
local HEAD="HEAD"
if git show --summary HEAD | grep ^Merge: ; then
HEAD=`git log -n 1 --no-merges --pretty=format:"%h"`
fi
## Identify previous commit to know how much to examine
## Script assumes we are only working with 1 commit if we are in master
## Otherwise, it looks for the common ancestor with master
local PREVIOUS_COMMIT="HEAD~1"
if [[ $DEBUG == "true" ]]; then
echo "Head commit: $HEAD"
OUT=$(git branch origin/master --contains $HEAD)
echo "Master contains head commit: $OUT"
fi
# We are not in master if master does not contain the head commit
if [[ $(git branch origin/master --contains $HEAD \
| wc -c ) == 0 ]]; then
PREVIOUS_COMMIT=`git merge-base origin/master $HEAD`
fi
echo "Previous Commit to start with: $PREVIOUS_COMMIT"
if [[ $DEBUG == "true" ]]; then
OUT=`git diff --name-only $HEAD $PREVIOUS_COMMIT`
echo "Files between top commit and previous: $OUT"
OUT=`git diff --name-only $HEAD $PREVIOUS_COMMIT | grep -vE "$SKIP_FILES"`
echo "Files should not skip: $OUT"
fi
# Identifies if the files involved in the commits between head and previous
# is more than the list of skippable files
if [[ $(git diff --name-only $HEAD $PREVIOUS_COMMIT \
| grep -vE "$SKIP_FILES" | cat | wc -c | sed 's/^ *//' ) > 0 ]]; then
SKIP_JOB_BY_FILES="false"
else
SKIP_JOB_BY_FILES="true"
fi
else
echo "CI step logic doesn't want a skip by files"
fi
echo "SKIP_JOB_BY_FILES: $SKIP_JOB_BY_FILES"
local SKIP_JOB_BY_COMMIT="false"
if [[ $DEBUG == "true" ]]; then
OUT=`git log -1 --format=%B`
echo "Top commit message: $OUT"
fi
# Note: this command only works in master branch
if [ $(git log -1 --format=%B | grep -E "\[maven-release-plugin\] prepare release" \
| cat | wc -l) -lt 1 ];
then
SKIP_JOB_BY_COMMIT="false"
else
SKIP_JOB_BY_COMMIT="true"
fi
echo "SKIP_JOB_BY_COMMIT: $SKIP_JOB_BY_COMMIT"
if [[ $SKIP_JOB_BY_FILES == 'false' && $SKIP_JOB_BY_COMMIT == 'false' ]]; then
echo "CI should be run."
RUN_JOB=1
else
echo "CI should not run.";
RUN_JOB=0
fi
}
......@@ -26,9 +26,17 @@ echo "exit" | ssh -t $SF_USER,checkstyle@shell.sourceforge.net create
mkdir -p .ci-temp
cd .ci-temp
rm -fr checkstyle.github.io
echo "Clone by ssh only to avoid passwords on push"
git clone git@github.com:checkstyle/checkstyle.github.io.git
sсp -R checkstyle.github.io $SF_USER,checkstyle@shell.sourceforge.net:/home/project-web/checkstyle/
echo "clean up git files"
rm -rf checkstyle.github.io/.git
rm -rf checkstyle.github.io/CNAME
echo "Archiving ..."
tar cfz checkstyle.github.io.tar.gz checkstyle.github.io
echo "Uploading to sourceforge ..."
scp checkstyle.github.io.tar.gz \
$SF_USER,checkstyle@shell.sourceforge.net:/home/project-web/checkstyle/
#############################
......@@ -36,9 +44,20 @@ ssh $SF_USER,checkstyle@shell.sourceforge.net << EOF
echo "Swap html content"
cd /home/project-web/checkstyle
tar -xzvf checkstyle.github.io.tar.gz
mv htdocs htdocs-$PREV_RELEASE
mv checkstyle.github.io htdocs
echo "create .htaccess for dtds redirection"
cat <<HTACCESS >> htdocs/.htaccess
Redirect 301 "/dtds" "https://checkstyle.org/dtds"
RedirectMatch 301 "/version/.*/dtds/(.*)" "https://checkstyle.org/dtds/\$1"
HTACCESS
chmod o+r htdocs/.htaccess
ln -s /home/project-web/checkstyle/reports htdocs/reports
echo "remove dtds folder from unsecure web site"
rm -r htdocs/dtds
echo "restore folder with links to old releases"
mv htdocs-$PREV_RELEASE/version htdocs
......@@ -57,7 +76,8 @@ tar -xzvf htdocs-archive/htdocs-$PREV_RELEASE.tar.gz -C htdocs-version/ \
--exclude="surefire-report.html" \
--exclude="linkcheck.html" --exclude="findbugs.html" --exclude="taglist.html" \
--exclude="releasenotes_old.html" --exclude="dependencies.html"
echo "Make a link to make it accessible from web"
ln -f -s htdocs-version/htdocs-$PREV_RELEASE htdocs/version/$PREV_RELEASE
ln -f -s \$(pwd)/htdocs-version/htdocs-$PREV_RELEASE \$(pwd)/htdocs/version/$PREV_RELEASE
EOF
......@@ -7,8 +7,8 @@ if [ -z "$1" ]; then
exit 1
fi
ECJ_JAR="ecj-4.7.jar"
ECJ_MAVEN_VERSION="R-4.7-201706120950"
ECJ_JAR="ecj-4.11.jar"
ECJ_MAVEN_VERSION="R-4.11-201903070500"
ECJ_PATH=~/.m2/repository/$ECJ_MAVEN_VERSION/$ECJ_JAR
if [ ! -f $ECJ_PATH ]; then
......
......@@ -49,5 +49,5 @@ if [[ $(grep -R "<problems" $RESULTS_DIR/ | cat | wc -l ) > 0 ]]; then
grep -Rl "<problems" $RESULTS_DIR/
exit 1;
else
echo "Inpection did not found any problems"
echo "Inspection did not found any problems"
fi
......@@ -7,7 +7,7 @@ my @excludes=qw(
(^|/)images/
^src/it/resources/
^src/test/resources/
^src/site/resources/styleguides/google-java-style-.*
^src/site/resources/styleguides/
^src/test/resources-noncompilable/
/messages.*_..\.properties$
/releasenotes_old\.xml$
......
#!/bin/sh
pkg=$1
if [ "$pkg" = "" -o ! -e "$pkg" ]; then
echo "no package supplied" 1>&2
exit 1
fi
leadsize=96
o=`expr $leadsize + 8`
set `od -j $o -N 8 -t u1 $pkg`
il=`expr 256 \* \( 256 \* \( 256 \* $2 + $3 \) + $4 \) + $5`
dl=`expr 256 \* \( 256 \* \( 256 \* $6 + $7 \) + $8 \) + $9`
# echo "sig il: $il dl: $dl"
sigsize=`expr 8 + 16 \* $il + $dl`
o=`expr $o + $sigsize + \( 8 - \( $sigsize \% 8 \) \) \% 8 + 8`
set `od -j $o -N 8 -t u1 $pkg`
il=`expr 256 \* \( 256 \* \( 256 \* $2 + $3 \) + $4 \) + $5`
dl=`expr 256 \* \( 256 \* \( 256 \* $6 + $7 \) + $8 \) + $9`
# echo "hdr il: $il dl: $dl"
hdrsize=`expr 8 + 16 \* $il + $dl`
o=`expr $o + $hdrsize`
EXTRACTOR="dd if=$pkg ibs=$o skip=1"
COMPRESSION=`($EXTRACTOR |file -) 2>/dev/null`
if echo $COMPRESSION |grep -q gzip; then
DECOMPRESSOR=gunzip
elif echo $COMPRESSION |grep -q bzip2; then
DECOMPRESSOR=bunzip2
elif echo $COMPRESSION |grep -iq xz; then # xz and XZ safe
DECOMPRESSOR=unxz
elif echo $COMPRESSION |grep -q cpio; then
DECOMPRESSOR=cat
else
# Most versions of file don't support LZMA, therefore we assume
# anything not detected is LZMA
DECOMPRESSOR=`which unlzma 2>/dev/null`
case "$DECOMPRESSOR" in
/* ) ;;
* ) DECOMPRESSOR=`which lzmash 2>/dev/null`
case "$DECOMPRESSOR" in
/* ) DECOMPRESSOR="lzmash -d -c" ;;
* ) DECOMPRESSOR=cat ;;
esac
;;
esac
fi
$EXTRACTOR 2>/dev/null | $DECOMPRESSOR
......@@ -8,6 +8,7 @@ abcun
abego
abstractcheck
abstractclassname
abstractfileset
abstractjavadoc
abstracttypeaware
ABx
......@@ -30,7 +31,6 @@ alot
ambig
Amessages
androidx
ANNOS
annotationlocation
annotationonsameline
annotationusestyle
......@@ -128,6 +128,7 @@ blablabla
bleh
Blic
blockandinlinetags
blockcomment
blockcommentposition
blockcommentstyle
blockquote
......@@ -214,6 +215,7 @@ Claira
classdataabstractioncoupling
classfanoutcomplexity
classloader
classmemberimpliedmodifier
classname
classpath
classpathref
......@@ -248,10 +250,11 @@ columnlimit
Combobox
commentsindentation
commerical
commonutil
Compat
Compiletime
Comspace
Concat
concat
config
configurationloader
Connell's
......@@ -311,6 +314,7 @@ DEST
destfile
Destructuring
detailast
detailastimpl
detailnodetreestringprinter
Dexec
dfn
......@@ -331,6 +335,7 @@ doccheck
Dockter
doclet
DOCTYPE
documentationcomments
Don''t
donotignoreexceptions
Dorekit
......@@ -360,7 +365,7 @@ edb
edef
edf
edu
efnforce
Eghj
ej
ejb
elasticsearch
......@@ -368,6 +373,7 @@ elementdef
elif
elist
Ellipsize
elsif
emacs
emptyblock
emptycatchblock
......@@ -520,7 +526,7 @@ gzip
hadoop
hamcrest
Haml
Hardcoded
hardcoded
hashcode
hashset
hashtable
......@@ -541,6 +547,7 @@ Homepage
horizontalwhitespace
Hostname
href
htaccess
htag
htdocs
html
......@@ -551,7 +558,7 @@ hurz
iae
ibs
ico
identificator
icu
identifiernames
Idref
idx
......@@ -588,7 +595,6 @@ innerassignment
Innerclass
INNERR
innertypelast
Inpection
instanceof
Intelli
intellij
......@@ -598,6 +604,7 @@ interfacememberimpliedmodifier
interfacetypeparametername
invalidformat
invalidinherit
invalidjavadocposition
ioe
ioffset
IPv
......@@ -605,6 +612,7 @@ isindex
isrutf
isset
issuecomment
issuehunt
itemvalue
ith
itr
......@@ -618,6 +626,7 @@ Jakub
jarchitect
javac
javadoc
javadocblocktaglocation
javadocdetailnodeparser
javadocmethod
javadocpackage
......@@ -629,6 +638,7 @@ javadoctags
javadoctype
javadocvariable
Javaee
javaformat
javaguide
javall
javamail
......@@ -657,6 +667,7 @@ jdt
jedit
jenkins
Jenkinsfile
jep
jetbrains
JFile
JFrame
......@@ -664,6 +675,7 @@ jgit
jgrasp
jguru
jira
jitpack
jjva
jkl
JLabel
......@@ -788,6 +800,9 @@ misconfigured
Misordered
missingctor
missingdeprecated
missingjavadocmethod
missingjavadocpackage
missingjavadoctype
missingoverride
missingswitchdefault
missingtag
......@@ -845,6 +860,7 @@ nbsp
ncss
ndex
needbraces
NEGS
Nejmeh
NEQ
nestedfordepth
......@@ -873,6 +889,7 @@ nofinalizer
NOI
noinfo
noinspection
nojavadoc
nolinewrap
nonascii
noncompilable
......@@ -884,6 +901,7 @@ NONGROUP
NONJAVA
nonjavadoc
nonnull
nonrequiredjavadoc
nonvalidating
noparentfile
noscript
......@@ -899,10 +917,12 @@ nowrap
npath
npathcomplexity
npe
npm
nts
nullanalysis
NULLCHECK
nullness
numberperline
numericliterals
nutsandbolts
nyu
......@@ -926,6 +946,7 @@ optgroup
optimisation
Optimizable
oraclejdk
orderedproperties
orderingandspacing
orekit
Orgorgan
......@@ -933,6 +954,7 @@ orm
Osgi
oss
osx
otechie
outertypefilename
outertypenumber
outter
......@@ -943,6 +965,7 @@ overridable
Overriden
OVERRIDERS
packageannotation
packagecomment
packagedeclaration
packagediffdirectory
packageinfo
......@@ -968,6 +991,7 @@ parsetreetablepresentation
Passembly
pathcomplexity
pathelement
patreon
Paulicke
paypal
pdf
......@@ -980,6 +1004,7 @@ pguyot
php
picocli
pid
PIPESTATUS
pitest
pitesttyle
pkga
......@@ -1034,12 +1059,14 @@ RBRACK
rcurly
rdiachenko
RDz
reactivex
README
Readonly
rebased
rebasing
redundantimport
redundantmodifier
refactored
refactor
refactoring
refid
regex
......@@ -1072,7 +1099,6 @@ rp
rparen
rpmfind
rq
Rrequired
Rrridden
RRRR
RSPEC
......@@ -1083,6 +1109,7 @@ ru
ruleset
Ruslan
rw
rx
sabaka
Sameline
saxonica
......@@ -1155,7 +1182,7 @@ ssl
stackexchange
stackoverflow
stackoverflowerror
Stacktrace
stacktrace
standalone
staticvariablename
Stdlib
......@@ -1187,9 +1214,11 @@ Superinterface
supertype
suppressioncommentfilter
suppressionfilter
suppressionsinglefilter
suppressionsloader
suppressionsstringprinter
suppressionxpathfilter
suppressionxpathsinglefilter
suppresswarnings
suppresswarningsfilter
suppresswarningsholder
......@@ -1223,6 +1252,7 @@ thetaphi
throwable
throwscount
Thymeleaf
tidelift
tmp
toc
todo
......@@ -1268,6 +1298,9 @@ uniqueproperties
Unitless
unlzma
unnecessaryparentheses
unnecessarysemicolonaftertypememberdeclaration
unnecessarysemicoloninenumeration
unnecessarysemicolonintrywithresources
Unproxyable
unregister
unsubscribe
......@@ -1285,6 +1318,7 @@ UTests
utf
UUID
UWF
uxxxx
Validator
VALUEEEE
vararg
......@@ -1324,6 +1358,7 @@ Whitebox
whitelist
whitespaceafter
whitespacearound
wholename
Wifi
wiki
wikipedia
......@@ -1342,6 +1377,7 @@ writingjavadocchecks
writinglisteners
Wsdl
www
xa
Xandy
xargs
xcode
......@@ -1371,8 +1407,10 @@ xmlvalidate
Xms
Xmx
xpath
xpathfilegeneratorastfilter
xpathfilegeneratorauditlistener
xpathfilter
xpathfilterelement
xpathmapper
xpathquerygenerator
xsd
......
This diff is collapsed.
......@@ -90,6 +90,23 @@ no-exception-hadoop-apache-groovy-scouter)
--config checks-nonjavadoc-error.xml --checkstyleVersion ${CS_POM_VERSION}
;;
no-exception-only-javadoc)
CS_POM_VERSION=$(mvn -e -q -Dexec.executable='echo' -Dexec.args='${project.version}' \
--non-recursive org.codehaus.mojo:exec-maven-plugin:1.3.1:exec)
echo 'CS_POM_VERSION='${CS_POM_VERSION}
build_checkstyle
checkout_from https://github.com/checkstyle/contribution.git
cd .ci-temp/contribution/checkstyle-tester
sed -i.'' 's/^guava/#guava/' projects-to-test-on.properties
sed -i.'' 's/#spring-framework/spring-framework/' projects-to-test-on.properties
sed -i.'' 's/#nbia-dcm4che-tools/nbia-dcm4che-tools/' projects-to-test-on.properties
sed -i.'' 's/#spotbugs/spotbugs/' projects-to-test-on.properties
sed -i.'' 's/#pmd/pmd/' projects-to-test-on.properties
sed -i.'' 's/#apache-ant/apache-ant/' projects-to-test-on.properties
groovy launch.groovy --listOfProjects projects-to-test-on.properties \
--config checks-only-javadoc-error.xml --checkstyleVersion ${CS_POM_VERSION}
;;
*)
echo "Unexpected argument: $1"
sleep 5s
......
#!/bin/bash
# This CI acceptance test is based on:
# https://github.com/jsoref/spelling/blob/04648bdc63723e5cdf5cbeaff2225a462807abc8
# https://github.com/jsoref/spelling/tree/04648bdc63723e5cdf5cbeaff2225a462807abc8
# It is conceptually `f` which runs `w` (spelling-unknown-word-splitter)
# plus `fchurn` which uses `dn` mostly rolled together.
set -e
spellchecker=.ci/jsoref-spellchecker
whitelist_path=.ci/jsoref-spellchecker/whitelist.words
dict=.ci-temp/english.words
word_splitter=$spellchecker/spelling-unknown-word-splitter.pl
run_output=$spellchecker/unknown.words
if [ ! -e $dict ]; then
mkdir -p .ci-temp
echo "Retrieve ./usr/share/dict/linux.words"
words_rpm=.ci-temp/words.rpm
mirror="https://rpmfind.net"
file_path="/linux/fedora/linux/development/rawhide/Everything/aarch64/os/Packages/w/"
file_name=$(curl -s "${mirror}${file_path}" | grep -o "words-.*.noarch.rpm")
curl "${mirror}${file_path}${file_name}" -o $words_rpm
$spellchecker/rpm2cpio.sh $words_rpm |\
cpio -i --to-stdout ./usr/share/dict/linux.words > $dict
rm $words_rpm
spellchecker='.ci/jsoref-spellchecker'
temp='.ci-temp'
whitelist_path="$spellchecker/whitelist.words"
dict="$temp/english.words"
word_splitter="$spellchecker/spelling-unknown-word-splitter.pl"
run_output="$spellchecker/unknown.words"
if [ ! -e "$dict" ]; then
mkdir -p $temp
echo "Retrieve cached english.words from checkstyle.sourceforge.io"
# english.words is taken from rpm:
# https://rpmfind.net/linux/fedora/linux/development/rawhide/Everything/aarch64/os/Packages/w/"
# "words-.*.noarch.rpm"
curl https://checkstyle.sourceforge.io/reports/english.words -o $dict
fi
if [ ! -e $word_splitter ]; then
if [ ! -e "$word_splitter" ]; then
echo "Retrieve w"
curl -s https://raw.githubusercontent.com/jsoref/spelling/master/w |\
perl -p -n -e "s</usr/share/dict/words><$dict>" > $word_splitter
chmod u+x $word_splitter
w_location='https://raw.githubusercontent.com/jsoref/spelling/master/w'
curl -s "$w_location" |\
perl -p -n -e "s</usr/share/dict/words><$dict>" > "$word_splitter"
get_word_splitter_status="${PIPESTATUS[0]} ${PIPESTATUS[1]}"
if [ "$get_word_splitter_status" != '0 0' ]; then
echo "$0 failed to retrieve/adapt word splitter ($w_location) ($get_word_splitter_status)"
rm -f "$word_splitter"
exit 6
fi
chmod u+x "$word_splitter"
echo "Retrieved."
ls -la $word_splitter
ls -la "$word_splitter"
fi
echo "Clean up from previous run"
rm -f $run_output
rm -f "$run_output"
echo "Run w"
(git 'ls-files' -z 2> /dev/null || hg locate -0) |\
.ci/jsoref-spellchecker/exclude.pl |\
xargs -0 $word_splitter |\
$word_splitter |\
perl -p -n -e 's/ \(.*//' > $run_output
"$spellchecker/exclude.pl" |\
xargs -0 "$word_splitter" |\
"$word_splitter" |\
perl -p -n -e 's/ \(.*//' > "$run_output"
word_splitter_status="${PIPESTATUS[2]} ${PIPESTATUS[3]}"
if [ "$word_splitter_status" != '0 0' ]; then
echo "$word_splitter failed ($word_splitter_status)"
exit 2
fi
printDetails() {
echo ''
......@@ -48,29 +58,29 @@ printDetails() {
}
echo "Review results"
if [ ! -e $whitelist_path ]; then
if [ ! -e "$whitelist_path" ]; then
echo "No preexisting $whitelist_path file."
printDetails
echo "cat > $whitelist_path <<EOF=EOF"
cat $run_output
echo 'cat > '"$whitelist_path"' <<EOF=EOF'
cat "$run_output"
echo EOF=EOF
exit 2
fi
diff_output=`diff -U1 $whitelist_path $run_output |grep -v "$spellchecker" || true`
diff_output=$(diff -U1 "$whitelist_path" "$run_output" |grep -v "$spellchecker" || true)
if [ -z "$diff_output" ]; then
echo "No new words and misspellings found."
exit 0
fi
new_output=`diff -i -U0 $whitelist_path $run_output |grep -v "$spellchecker" |\
perl -n -w -e 'next unless /^\+/; next if /^\+{3} /; s/^.//; print;'`
new_output=$(diff -i -U0 "$whitelist_path" "$run_output" |grep -v "$spellchecker" |\
perl -n -w -e 'next unless /^\+/; next if /^\+{3} /; s/^.//; print;')
if [ -z "$new_output" ]; then
echo "There are now fewer misspellings than before."
echo "$whitelist_path could be updated:"
echo ''
echo "patch $whitelist_path <<EOF"
echo "patch '$whitelist_path' <<EOF"
echo "$diff_output"
echo "EOF"
sleep 5
......
......@@ -39,12 +39,12 @@ test-fr)
test-zh)
mvn -e clean integration-test failsafe:verify \
-DargLine='-Duser.language=zh -Duser.country=ZH -Xms1024m -Xmx2048m'
-DargLine='-Duser.language=zh -Duser.country=CN -Xms1024m -Xmx2048m'
;;
test-jp)
test-ja)
mvn -e clean integration-test failsafe:verify \
-DargLine='-Duser.language=jp -Duser.country=JP -Xms1024m -Xmx2048m'
-DargLine='-Duser.language=ja -Duser.country=JP -Xms1024m -Xmx2048m'
;;
test-pt)
......@@ -57,8 +57,26 @@ test-tr)
-DargLine='-Duser.language=tr -Duser.country=TR -Xms1024m -Xmx2048m'
;;
travis-osx)
mvn -e package -Dlinkcheck.skip=true
osx-assembly)
export JAVA_HOME=$(/usr/libexec/java_home)
mvn -e package -Passembly
;;
osx-package)
export JAVA_HOME=$(/usr/libexec/java_home)
mvn -e package
;;
osx-jdk12-package)
exclude1="!FileContentsTest#testGetJavadocBefore,"
exclude2="!MainFrameModelPowerTest#testOpenFileWithUnknownParseMode,"
exclude3="!TokenUtilTest#testTokenValueIncorrect2,"
exclude4="!ImportControlLoaderPowerTest#testInputStreamThatFailsOnClose"
export JAVA_HOME=$(/usr/libexec/java_home)
mvn -e package -Dtest=*,${exclude1}${exclude2}${exclude3}${exclude4}
;;
osx-jdk12-assembly)
mvn -e package -Passembly
;;
......@@ -72,8 +90,12 @@ javac9)
javac8)
# InputCustomImportOrderNoPackage2 - nothing is required in front of first import
# InputIllegalTypePackageClassName - bad import for testing
# InputVisibilityModifierPackageClassName - bad import for testing
files=($(grep -REL --include='*.java' \
--exclude='InputCustomImportOrderNoPackage2.java' \
--exclude='InputIllegalTypePackageClassName.java' \
--exclude='InputVisibilityModifierPackageClassName.java' \
'//non-compiled (syntax|with javac)?\:' \
src/test/resources-noncompilable))
mkdir -p target
......@@ -83,6 +105,22 @@ javac8)
done
;;
jdk12-assembly-site)
mvn -e package -Passembly
mvn -e site -Pno-validations
;;
jdk12-verify-limited)
# powermock doesn't support modifying final fields in JDK12, so need jacoco skip
exclude1="!FileContentsTest#testGetJavadocBefore,"
exclude2="!MainFrameModelPowerTest#testOpenFileWithUnknownParseMode,"
exclude3="!TokenUtilTest#testTokenValueIncorrect2,"
exclude4="!ImportControlLoaderPowerTest#testInputStreamThatFailsOnClose"
# we skip pmd and spotbugs as they executed in special Travis build
mvn -e verify -Dtest=*,$exclude1$exclude2$exclude3$exclude4 -Djacoco.skip=true \
-Dpmd.skip=true -Dspotbugs.skip=true
;;
nondex)
mvn -e --fail-never clean nondex:nondex -DargLine='-Xms1024m -Xmx2048m'
cat `grep -RlE 'td class=.x' .nondex/ | cat` < /dev/null > output.txt
......@@ -93,7 +131,7 @@ nondex)
;;
versions)
if [[ -v TRAVIS_EVENT_TYPE && $TRAVIS_EVENT_TYPE != "cron" ]]; then exit 0; fi
if [ -v TRAVIS_EVENT_TYPE ] && [ $TRAVIS_EVENT_TYPE != "cron" ] ; then exit 0; fi
mvn -e clean versions:dependency-updates-report versions:plugin-updates-report
if [ $(grep "<nextVersion>" target/*-updates-report.xml | cat | wc -l) -gt 0 ]; then
echo "Version reports (dependency-updates-report.xml):"
......@@ -128,7 +166,7 @@ assembly-run-all-jar)
sonarqube)
# token could be generated at https://sonarcloud.io/account/security/
# executon on local: SONAR_TOKEN=xxxxxxxxxx ./.ci/travis/travis.sh sonarqube
if [[ -v TRAVIS_PULL_REQUEST && $TRAVIS_PULL_REQUEST && $TRAVIS_PULL_REQUEST =~ ^([0-9]*)$ ]];
if [ -v TRAVIS_PULL_REQUEST ] && [[ $TRAVIS_PULL_REQUEST && $TRAVIS_PULL_REQUEST =~ ^([0-9]*)$ ]];
then
exit 0;
fi
......@@ -157,6 +195,30 @@ pr-description)
.ci/travis/xtr_pr-description.sh
;;
pr-age)
## Travis merges the PR commit into origin/master
## This command undoes that to work with the original branch
## if it notices a merge commit
if git show --summary HEAD | grep ^Merge: ;
then
git reset --hard `git log -n 1 --no-merges --pretty=format:"%h"`
fi
PR_MASTER=`git merge-base origin/master HEAD`
COMMITS_SINCE_MASTER=`git rev-list --count $PR_MASTER..origin/master`
MAX_ALLOWED=10
echo "The PR is based on a master that is $COMMITS_SINCE_MASTER commit(s) old."
echo "The max allowed is $MAX_ALLOWED."
if (( $COMMITS_SINCE_MASTER > $MAX_ALLOWED ));
then
echo "This PR is too old and should be rebased on origin/master."
sleep 5s
false
fi
;;
check-chmod)
.ci/travis/checkchmod.sh
;;
......@@ -170,6 +232,8 @@ all-sevntu-checks)
| grep "<li>" | cut -d '>' -f 3 | sed "s/<\/a//" \
| grep -E "Check$" \
| sort | uniq | sed "s/Check$//" > web.txt
# temporal ignore list
# sed -i.backup '/Jsr305Annotations/d' web.txt
diff -u web.txt file.txt
;;
......@@ -182,11 +246,10 @@ no-error-test-sbe)
cd .ci-temp/
git clone https://github.com/real-logic/simple-binary-encoding.git
cd simple-binary-encoding
git checkout 1.8.1
sed -i'' \
"s/'com.puppycrawl.tools:checkstyle:.*'/'com.puppycrawl.tools:checkstyle:$CS_POM_VERSION'/" \
build.gradle
./gradlew build
./gradlew build --stacktrace
;;
no-exception-test-checkstyle-sevntu-checkstyle)
......@@ -239,6 +302,23 @@ no-exception-test-guava-with-google-checks)
--config ../../src/main/resources/google_checks.xml --checkstyleVersion $CS_POM_VERSION
;;
no-exception-test-guava-with-sun-checks)
CS_POM_VERSION=$(mvn -e -q -Dexec.executable='echo' -Dexec.args='${project.version}' \
--non-recursive org.codehaus.mojo:exec-maven-plugin:1.3.1:exec)
echo CS_version: $CS_POM_VERSION
git clone https://github.com/checkstyle/contribution
cd contribution/checkstyle-tester
sed -i.'' 's/^guava/#guava/' projects-to-test-on.properties
sed -i.'' 's/#guava|/guava|/' projects-to-test-on.properties
cd ../../
mvn -e clean install -Pno-validations
sed -i.'' 's/value=\"error\"/value=\"ignore\"/' src/main/resources/sun_checks.xml
cd contribution/checkstyle-tester
export MAVEN_OPTS="-Xmx2048m"
groovy ./launch.groovy --listOfProjects projects-to-test-on.properties \
--config ../../src/main/resources/sun_checks.xml --checkstyleVersion $CS_POM_VERSION
;;
no-exception-test-hibernate)
CS_POM_VERSION=$(mvn -e -q -Dexec.executable='echo' -Dexec.args='${project.version}' \
--non-recursive org.codehaus.mojo:exec-maven-plugin:1.3.1:exec)
......@@ -342,6 +422,71 @@ no-exception-test-alot-of-project1)
--config checks-nonjavadoc-error.xml --checkstyleVersion $CS_POM_VERSION
;;
check-missing-pitests)
fail=0
mkdir -p target
list=($(cat pom.xml | \
xmlstarlet sel --ps -N pom="http://maven.apache.org/POM/4.0.0" \
-t -v '//pom:profile[./pom:id[contains(text(),'pitest')]]//pom:targetClasses/pom:param'))
CMD="find src/main/java -type f ! -name 'package-info.java'"
for item in ${list[@]}
do
item=${item//\./\/}
if [[ $item == */\* ]] ; then
item=$item
else
if [[ $item != *\* ]] ; then
item="$item.java"
else
item="${item::-1}.java"
fi
fi
CMD="$CMD -and ! -wholename '*/$item'"
done
CMD="$CMD | sort > target/result.txt"
eval $CMD
results=`cat target/result.txt`
echo "List of missing files in pitest profiles: $results"
if [[ -n $results ]] ; then
fail=1
fi
sleep 5s
exit $fail
;;
verify-no-exception-configs)
wget -q \
https://raw.githubusercontent.com/checkstyle/contribution/master/checkstyle-tester/checks-nonjavadoc-error.xml
wget -q \
https://raw.githubusercontent.com/checkstyle/contribution/master/checkstyle-tester/checks-only-javadoc-error.xml
MODULES_WITH_EXTERNAL_FILES="Filter|ImportControl"
xmlstarlet sel --net --template -m .//module -v "@name" \
-n checks-nonjavadoc-error.xml -n checks-only-javadoc-error.xml \
| grep -vE $MODULES_WITH_EXTERNAL_FILES | grep -v "^$" \
| sort | uniq | sed "s/Check$//" > web.txt
xmlstarlet sel --net --template -m .//module -v "@name" -n config/checkstyle_checks.xml \
| grep -vE $MODULES_WITH_EXTERNAL_FILES | grep -v "^$" \
| sort | uniq | sed "s/Check$//" > file.txt
diff -u web.txt file.txt
;;
git-status)
if [ $(git status | grep "Changes not staged for commit" | wc -l) -gt 0 ]; then
echo "There are changes in files after clone, recheck .gitattributes file"
sleep 5s
false
fi
;;
*)
echo "Unexpected argument: $1"
sleep 5s
......
......@@ -35,16 +35,16 @@ no-error-orekit)
CS_POM_VERSION=$(mvn -e -q -Dexec.executable='echo' -Dexec.args='${project.version}' \
--non-recursive org.codehaus.mojo:exec-maven-plugin:1.3.1:exec)
echo CS_version: ${CS_POM_VERSION}
checkout_from https://github.com/Hipparchus-Math/hipparchus.git
cd .ci-temp/hipparchus
mvn install -DskipTests
cd -
checkout_from https://github.com/CS-SI/Orekit.git
cd .ci-temp/Orekit
# no CI is enforced in project, so to make our build stable we should
# checkout to latest release (annotated tag)
# checkout to latest release/development (annotated tag or hash)
# git checkout $(git describe --abbrev=0 --tags)
# Orekit use 'develop' branch as target for PullRequest merges, where all our breaking changes
# of 8.2 and above are applied
#git checkout develop
# due to temporal compilation problems(20180522) we use latest commit where compilation pass
git checkout 9862be9
git checkout 3a9787ec3f166bd770f9c119cd7724f57
mvn -e compile checkstyle:check -Dorekit.checkstyle.version=${CS_POM_VERSION}
cd ../
rm -rf Orekit
......@@ -54,14 +54,11 @@ no-error-xwiki)
CS_POM_VERSION=$(mvn -e -q -Dexec.executable='echo' -Dexec.args='${project.version}' \
--non-recursive org.codehaus.mojo:exec-maven-plugin:1.3.1:exec)
echo CS_version: ${CS_POM_VERSION}
# till https://github.com/xwiki/xwiki-commons/pull/39
checkout_from https://github.com/checkstyle/xwiki-commons.git
checkout_from https://github.com/xwiki/xwiki-commons.git
cd .ci-temp/xwiki-commons
# till https://github.com/xwiki/xwiki-commons/pull/39
git checkout i5812-rename-util
mvn -f xwiki-commons-tools/xwiki-commons-tool-verification-resources/pom.xml \
install -DskipTests -Dcheckstyle.version=${CS_POM_VERSION}
mvn -e test-compile checkstyle:check -Dcheckstyle.version=${CS_POM_VERSION}
mvn -e test-compile checkstyle:check@default -Dcheckstyle.version=${CS_POM_VERSION}
cd ../../
rm -rf xwiki-commons
;;
......@@ -134,7 +131,7 @@ no-error-sevntu-checks)
checkout_from https://github.com/sevntu-checkstyle/sevntu.checkstyle.git
cd .ci-temp/sevntu.checkstyle/sevntu-checks
mvn -e -Pno-validations verify -Dcheckstyle.skip=false -Dcheckstyle.version=${CS_POM_VERSION} \
-Dcheckstyle.configLocation=../../config/checkstyle_checks.xml
-Dcheckstyle.configLocation=../../../config/checkstyle_checks.xml
cd ../../
rm -rf sevntu.checkstyle
;;
......@@ -174,7 +171,7 @@ no-exception-checkstyle-sevntu)
checkout_from https://github.com/checkstyle/contribution.git
cd .ci-temp/contribution/checkstyle-tester
sed -i'' 's/^guava/#guava/' projects-for-wercker.properties
sed -i'' 's/#checkstyle/checkstyle/' projects-for-wercker.properties
sed -i'' 's/#local-checkstyle/local-checkstyle/' projects-for-wercker.properties
sed -i'' 's/#sevntu-checkstyle/sevntu-checkstyle/' projects-for-wercker.properties
groovy ./launch.groovy --listOfProjects projects-for-wercker.properties \
--config checks-nonjavadoc-error.xml --checkstyleVersion ${CS_POM_VERSION}
......@@ -302,7 +299,7 @@ no-warning-imports-guava)
cd ../../
rm -rf contribution
if [ -z "$RESULT" ]; then
echo "Inpection did not find any warnings"
echo "Inspection did not find any warnings"
else
echo "$RESULT"
echo "Some warnings have been found. Verification failed."
......@@ -326,7 +323,7 @@ no-warning-imports-java-design-patterns)
cd ../../
rm -rf contribution
if [ -z "$RESULT" ]; then
echo "Inpection did not find any warnings"
echo "Inspection did not find any warnings"
else
echo "$RESULT"
echo "Some warnings have been found. Verification failed."
......
......@@ -9,31 +9,30 @@ jobs:
key: m2-cache
- checkout
- run:
name: skip_ci creation
name: run_job creation
command: |
mkdir -p .ci-temp
echo -n ".github|appveyor.yml|.travis.yml|\.ci/" >> .ci-temp/skip_ci_files
echo -n "|distelli-manifest.yml|fast-forward-merge.sh" >> .ci-temp/skip_ci_files
echo -n "|LICENSE|LICENSE.apache20|README.md|release.sh" >> .ci-temp/skip_ci_files
echo -n "|RIGHTS.antlr|shippable.yml|codeship" >> .ci-temp/skip_ci_files
echo -n "|shippable.sh|wercker.yml|wercker.sh" >> .ci-temp/skip_ci_files
echo -n "|intellij-idea-inspections.xml" >> .ci-temp/skip_ci_files
echo -n "|org.eclipse.jdt.core.prefs" >> .ci-temp/skip_ci_files
echo -n "|Jenkinsfile" >> .ci-temp/skip_ci_files
SKIP_CI=false;
if [ $(git diff --name-only HEAD HEAD~1 \
| grep -vE $(cat .ci-temp/skip_ci_files) | wc -c) -gt 0 ] ; then
SKIP_CI=false;
else
SKIP_CI=true;
fi
echo $SKIP_CI > .ci-temp/skip_ci
SKIP_FILES1=".github|appveyor.yml|.travis.yml|\.ci/"
SKIP_FILES2="|fast-forward-merge.sh"
SKIP_FILES3="|LICENSE|LICENSE.apache20|README.md|release.sh"
SKIP_FILES4="|RIGHTS.antlr|shippable.yml|codeship"
SKIP_FILES5="|shippable.sh|wercker.yml|wercker.sh"
SKIP_FILES6="|intellij-idea-inspections.xml"
SKIP_FILES7="|org.eclipse.jdt.core.prefs"
SKIP_FILES8="|Jenkinsfile"
FULL_SKIP1=$SKIP_FILES1$SKIP_FILES2$SKIP_FILES3$SKIP_FILES4
FULL_SKIP2=$SKIP_FILES5$SKIP_FILES6$SKIP_FILES7$SKIP_FILES8
SKIP_FILES=$FULL_SKIP1$FULL_SKIP2
#source ./.ci/common.sh
#should_run_job "recheck" $SKIP_FILES
export RUN_JOB=1
echo $RUN_JOB > .ci-temp/run_job
- run:
name: download all maven dependencies and groovy
command: |
SKIP_CI=`cat .ci-temp/skip_ci`
echo "SKIP_CI="$SKIP_CI
if [[ $SKIP_CI == 'false' ]]; then
RUN_JOB=`cat .ci-temp/run_job`
echo "RUN_JOB="$RUN_JOB
if [[ $RUN_JOB == 1 ]]; then
pwd
ls -la
java -version
......@@ -57,9 +56,9 @@ jobs:
at: /home/circleci/
- run:
command: |
SKIP_CI=`cat .ci-temp/skip_ci`
echo "SKIP_CI="$SKIP_CI
if [[ $SKIP_CI == 'false' ]]; then
RUN_JOB=`cat .ci-temp/run_job`
echo "RUN_JOB="$RUN_JOB
if [[ $RUN_JOB == 1 ]]; then
echo "./.ci/pitest.sh pitest-coding" >> commands.txt
echo "./.ci/pitest.sh pitest-common" >> commands.txt
echo "./.ci/pitest.sh pitest-imports" >> commands.txt
......@@ -79,9 +78,9 @@ jobs:
at: /home/circleci/
- run:
command: |
SKIP_CI=`cat .ci-temp/skip_ci`
echo "SKIP_CI="$SKIP_CI
if [[ $SKIP_CI == 'false' ]]; then
RUN_JOB=`cat .ci-temp/run_job`
echo "RUN_JOB="$RUN_JOB
if [[ $RUN_JOB == 1 ]]; then
echo "./.ci/pitest.sh pitest-main" >> commands.txt
echo "./.ci/pitest.sh pitest-javadoc" >> commands.txt
echo "./.ci/pitest.sh pitest-indentation" >> commands.txt
......@@ -101,9 +100,9 @@ jobs:
at: /home/circleci/
- run:
command: |
SKIP_CI=`cat .ci-temp/skip_ci`
echo "SKIP_CI="$SKIP_CI
if [[ $SKIP_CI == 'false' ]]; then
RUN_JOB=`cat .ci-temp/run_job`
echo "RUN_JOB="$RUN_JOB
if [[ $RUN_JOB == 1 ]]; then
echo "./.ci/pitest.sh pitest-misc" >> commands.txt
echo "./.ci/pitest.sh pitest-design" >> commands.txt
echo "./.ci/pitest.sh pitest-api" >> commands.txt
......@@ -123,9 +122,9 @@ jobs:
at: /home/circleci/
- run:
command: |
SKIP_CI=`cat .ci-temp/skip_ci`
echo "SKIP_CI="$SKIP_CI
if [[ $SKIP_CI == 'false' ]]; then
RUN_JOB=`cat .ci-temp/run_job`
echo "RUN_JOB="$RUN_JOB
if [[ $RUN_JOB == 1 ]]; then
echo "./.ci/pitest.sh pitest-whitespace" >> commands.txt
echo "./.ci/pitest.sh pitest-filters" >> commands.txt
echo "./.ci/pitest.sh pitest-header" >> commands.txt
......@@ -145,9 +144,9 @@ jobs:
at: /home/circleci/
- run:
command: |
SKIP_CI=`cat .ci-temp/skip_ci`
echo "SKIP_CI="$SKIP_CI
if [[ $SKIP_CI == 'false' ]]; then
RUN_JOB=`cat .ci-temp/run_job`
echo "RUN_JOB="$RUN_JOB
if [[ $RUN_JOB == 1 ]]; then
echo "./.ci/pitest.sh pitest-packagenamesloader" >> commands.txt
echo "./.ci/pitest.sh pitest-tree-walker" >> commands.txt
echo "./.ci/pitest.sh pitest-naming" >> commands.txt
......@@ -167,9 +166,9 @@ jobs:
at: /home/circleci/
- run:
command: |
SKIP_CI=`cat .ci-temp/skip_ci`
echo "SKIP_CI="$SKIP_CI
if [[ $SKIP_CI == 'false' ]]; then
RUN_JOB=`cat .ci-temp/run_job`
echo "RUN_JOB="$RUN_JOB
if [[ $RUN_JOB == 1 ]]; then
echo "./.ci/pitest.sh pitest-blocks" >> commands.txt
echo "./.ci/pitest.sh pitest-sizes" >> commands.txt
echo "./.ci/pitest.sh pitest-modifier" >> commands.txt
......@@ -189,9 +188,9 @@ jobs:
at: /home/circleci/
- run:
command: |
SKIP_CI=`cat .ci-temp/skip_ci`
echo "SKIP_CI="$SKIP_CI
if [[ $SKIP_CI == 'false' ]]; then
RUN_JOB=`cat .ci-temp/run_job`
echo "RUN_JOB="$RUN_JOB
if [[ $RUN_JOB == 1 ]]; then
echo "./.ci/pitest.sh pitest-gui" >> commands.txt
CMD="$(circleci tests split commands.txt)"
echo "Command: $CMD"
......@@ -200,6 +199,25 @@ jobs:
echo "build is skipped ..."
fi
pitest8:
machine: true
parallelism: 4
steps:
- attach_workspace:
at: /home/circleci/
- run:
command: |
RUN_JOB=`cat .ci-temp/run_job`
echo "RUN_JOB="$RUN_JOB
if [[ $RUN_JOB == 1 ]]; then
echo "./.ci/pitest.sh pitest-common-2" >> commands.txt
CMD="$(circleci tests split commands.txt)"
echo "Command: $CMD"
eval $CMD
else
echo "build is skipped ..."
fi
workflows:
version: 2
pitest-testing:
......@@ -227,3 +245,6 @@ workflows:
# - pitest7:
# requires:
# - build-caches
- pitest8:
requires:
- build-caches
/src/test/resources/com/puppycrawl/tools/checkstyle/checks/newlineatendoffile/InputNewlineAtEndOfFileLf.java eol=lf
# All files default to text with LF eol
* eol=lf
# Windows files always have CRLF eol
*.bat eol=crlf
# Binary files need to be listed explicitly as first rule makes all files text files
*.gif binary
*.ico binary
*.jpeg binary
*.jpg binary
*.png binary
# Test resources that need specific eol
/src/test/resources/com/puppycrawl/tools/checkstyle/checks/newlineatendoffile/InputNewlineAtEndOfFileCrlf.java eol=crlf
/src/test/resources/com/puppycrawl/tools/checkstyle/checks/newlineatendoffile/InputNewlineAtEndOfFileCr.java -text
/src/test/resources/com/puppycrawl/tools/checkstyle/grammar/InputNewlineCrAtEndOfFile.java -text
/src/test/resources/com/puppycrawl/tools/checkstyle/grammar/javadoc/javadocTags/InputSpaceBeforeDescriptionInBlockJavadocTags.javadoc eol=lf
......@@ -16,10 +16,10 @@ Please note that PRs are looked only for approved issues. Follow the PR guide fo
#### [Pull Request Template](https://github.com/checkstyle/checkstyle/blob/master/.github/PULL_REQUEST_TEMPLATE.md)
Please follow the below links in order to start contributing to the checkstyle project
#### [Beginning Development](http://checkstyle.sourceforge.net/beginning_development.html)
#### [Contribution Guidelines](http://checkstyle.sourceforge.net/contributing.html)
#### [Beginning Development](https://checkstyle.org/beginning_development.html)
#### [Contribution Guidelines](https://checkstyle.org/contributing.html)
Find the links below to import the checkstyle project to an IDE
#### [Importing checkstyle project to IntelliJ](http://checkstyle.sourceforge.net/idea.html)
#### [Importing checkstyle project to Eclipse](http://checkstyle.sourceforge.net/eclipse.html)
#### [Importing checkstyle project to Netbeans](http://checkstyle.sourceforge.net/netbeans.html)
#### [Importing checkstyle project to IntelliJ](https://checkstyle.org/idea.html)
#### [Importing checkstyle project to Eclipse](https://checkstyle.org/eclipse.html)
#### [Importing checkstyle project to Netbeans](https://checkstyle.org/netbeans.html)
# These are supported funding model platforms
#github: romani
#patreon: # Replace with a single Patreon username
open_collective: checkstyle
#ko_fi: # Replace with a single Ko-fi username
#tidelift: # Replace with a single Tidelift platform-name/package-name e.g., npm/babel
#community_bridge: # Replace with a single Community Bridge project-name e.g., cloud-foundry
liberapay: checkstyle
#issuehunt: # Replace with a single IssueHunt username
#otechie: # Replace with a single Otechie username
custom: https://www.bountysource.com/teams/checkstyle/issues
......@@ -21,3 +21,5 @@ Describe what you expect in detail.
Still not clear ???
see example - https://checkstyle.org/report_issue.html#How_to_report_a_bug
ATTENTION: FAILURE TO FOLLOW THE ABOVE TEMPLATE WILL RESULT IN THE ISSUE BEING CLOSED.