HBASE-12261 Add checkstyle to HBase build process

This commit is contained in:
Elliott Clark 2014-10-15 10:28:45 -07:00
parent 686e77108a
commit 487b58313c
5 changed files with 156 additions and 45 deletions

View File

@ -220,7 +220,6 @@ setup () {
against trunk revision ${SVN_REVISION}.
ATTACHMENT ID: ${ATTACHMENT_ID}"
#PENDING: cp -f $SUPPORT_DIR/etc/checkstyle* ./src/test
### Copy the patch file to $PATCH_DIR
else
VERSION=PATCH-${defect}
@ -250,16 +249,17 @@ setup () {
echo "======================================================================"
echo ""
echo ""
echo "$MVN clean test -DskipTests -D${PROJECT_NAME}PatchProcess > $PATCH_DIR/trunkJavacWarnings.txt 2>&1"
echo "$MVN clean package checkstyle:checkstyle-aggregate -DskipTests -D${PROJECT_NAME}PatchProcess > $PATCH_DIR/trunkJavacWarnings.txt 2>&1"
export MAVEN_OPTS="${MAVEN_OPTS}"
# build core and tests
$MVN clean test -DskipTests -D${PROJECT_NAME}PatchProcess > $PATCH_DIR/trunkJavacWarnings.txt 2>&1
$MVN clean package checkstyle:checkstyle-aggregate -DskipTests -D${PROJECT_NAME}PatchProcess > $PATCH_DIR/trunkJavacWarnings.txt 2>&1
if [[ $? != 0 ]] ; then
ERR=`$GREP -A 5 'Compilation failure' $PATCH_DIR/trunkJavacWarnings.txt`
echo "Trunk compilation is broken?
{code}$ERR{code}"
cleanupAndExit 1
fi
mv target/checkstyle-result.xml $PATCH_DIR/trunkCheckstyle.xml
}
###############################################################################
@ -493,6 +493,41 @@ checkJavacWarnings () {
return 0
}
checkCheckstyleErrors() {
echo ""
echo ""
echo "======================================================================"
echo "======================================================================"
echo " Determining number of patched Checkstyle errors."
echo "======================================================================"
echo "======================================================================"
echo ""
echo ""
if [[ -f $PATCH_DIR/trunkCheckstyle.xml ]] ; then
$MVN package -DskipTests checkstyle:checkstyle-aggregate > /dev/null 2>&1
mv target/checkstyle-result.xml $PATCH_DIR/patchCheckstyle.xml
mv target/site/checkstyle-aggregate.html $PATCH_DIR
mv target/site/checkstyle.css $PATCH_DIR
trunkCheckstyleErrors=`$GREP '<error' $PATCH_DIR/trunkCheckstyle.xml | $AWK 'BEGIN {total = 0} {total += 1} END {print total}'`
patchCheckstyleErrors=`$GREP '<error' $PATCH_DIR/patchCheckstyle.xml | $AWK 'BEGIN {total = 0} {total += 1} END {print total}'`
if [[ $patchCheckstyleErrors -gt $trunkCheckstyleErrors ]] ; then
JIRA_COMMENT_FOOTER="Checkstyle Errors: $BUILD_URL/artifact/patchprocess/checkstyle-aggregate.html
$JIRA_COMMENT_FOOTER"
JIRA_COMMENT="$JIRA_COMMENT
{color:red}-1 javac{color}. The applied patch generated $patchCheckstyleErrors checkstyle errors (more than the trunk's current $trunkCheckstyleErrors errors)."
return 1
fi
echo "There were $patchCheckstyleErrors checkstyle errors in this patch compared to $trunkCheckstyleErrors on master."
fi
JIRA_COMMENT="$JIRA_COMMENT
{color:green}+1 javac{color}. The applied patch does not increase the total number of checkstyle errors"
return 0
}
###############################################################################
checkProtocErrors () {
echo ""
@ -556,41 +591,6 @@ $JIRA_COMMENT_FOOTER"
return 0
}
###############################################################################
### Check there are no changes in the number of Checkstyle warnings
checkStyle () {
echo ""
echo ""
echo "======================================================================"
echo "======================================================================"
echo " Determining number of patched checkstyle warnings."
echo "======================================================================"
echo "======================================================================"
echo ""
echo ""
echo "THIS IS NOT IMPLEMENTED YET"
echo ""
echo ""
echo "$MVN package checkstyle:checkstyle -D${PROJECT_NAME}PatchProcess -DskipTests"
export MAVEN_OPTS="${MAVEN_OPTS}"
$MVN package checkstyle:checkstyle -D${PROJECT_NAME}PatchProcess -DskipTests
JIRA_COMMENT_FOOTER="Checkstyle results: $BUILD_URL/artifact/trunk/build/test/checkstyle-errors.html
$JIRA_COMMENT_FOOTER"
### TODO: calculate actual patchStyleErrors
# patchStyleErrors=0
# if [[ $patchStyleErrors != 0 ]] ; then
# JIRA_COMMENT="$JIRA_COMMENT
#
# {color:red}-1 checkstyle{color}. The patch generated $patchStyleErrors code style errors."
# return 1
# fi
# JIRA_COMMENT="$JIRA_COMMENT
#
# {color:green}+1 checkstyle{color}. The patch generated 0 code style errors."
return 0
}
###############################################################################
### Check there are no changes in the number of Findbugs warnings
checkFindbugsWarnings () {
@ -763,9 +763,9 @@ checkSiteXml () {
echo ""
echo ""
echo "$MVN compile site -DskipTests -D${PROJECT_NAME}PatchProcess > $PATCH_DIR/patchSiteOutput.txt 2>&1"
echo "$MVN package site -DskipTests -D${PROJECT_NAME}PatchProcess > $PATCH_DIR/patchSiteOutput.txt 2>&1"
export MAVEN_OPTS="${MAVEN_OPTS}"
$MVN compile site -DskipTests -D${PROJECT_NAME}PatchProcess > $PATCH_DIR/patchSiteOutput.txt 2>&1
$MVN package site -DskipTests -D${PROJECT_NAME}PatchProcess > $PATCH_DIR/patchSiteOutput.txt 2>&1
if [[ $? != 0 ]] ; then
JIRA_COMMENT="$JIRA_COMMENT
@ -911,9 +911,8 @@ checkProtocErrors
(( RESULT = RESULT + $? ))
checkJavadocWarnings
(( RESULT = RESULT + $? ))
### Checkstyle not implemented yet
#checkStyle
#(( RESULT = RESULT + $? ))
checkCheckstyleErrors
(( RESULT = RESULT + $? ))
checkFindbugsWarnings
(( RESULT = RESULT + $? ))
checkReleaseAuditWarnings

32
hbase-checkstyle/pom.xml Normal file
View File

@ -0,0 +1,32 @@
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<!--
/**
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-->
<modelVersion>4.0.0</modelVersion>
<groupId>org.apache.hbase</groupId>
<artifactId>hbase-checkstyle</artifactId>
<version>2.0.0-SNAPSHOT</version>
<name>HBase - Checkstyle</name>
<description>Module to hold Checkstyle properties for HBase.</description>
</project>

View File

@ -0,0 +1,8 @@
<?xml version="1.0"?>
<!DOCTYPE suppressions PUBLIC
"-//Puppy Crawl//DTD Suppressions 1.0//EN"
"http://www.puppycrawl.com/dtds/suppressions_1_0.dtd">
<suppressions>
<suppress checks="." files=".*/generated/.*\.java"/>
<suppress checks="MagicNumberCheck" files=".*Test\.java"/>
</suppressions>

View File

@ -0,0 +1,32 @@
<?xml version="1.0"?>
<!DOCTYPE module PUBLIC "-//Puppy Crawl//DTD Check Configuration 1.3//EN"
"http://www.puppycrawl.com/dtds/configuration_1_3.dtd">
<module name="Checker">
<module name="FileTabCharacter"/>
<module name="TreeWalker">
<module name="AvoidStarImport"/>
<module name="RedundantImport"/>
<module name="UnusedImports"/>
<module name="LineLength">
<property name="max" value="100"/>
<property name="ignorePattern" value="^package.*|^import.*|a href|href|http://|https://|ftp://"/>
</module>
<module name="MethodLength"/>
<module name="MethodParamPad"/>
<module name="ParenPad"/>
<module name="EmptyStatement"/>
<module name="EmptyBlock"/>
<module name="EqualsHashCode"/>
<module name="IllegalInstantiation"/>
<module name="InnerAssignment"/>
<module name="MissingSwitchDefault"/>
<module name="FinalClass"/>
<module name="HideUtilityClassConstructor"/>
<module name="InterfaceIsType"/>
<module name="VisibilityModifier"/>
<module name="ArrayTypeStyle"/>
<module name="UpperEll"/>
<module name="NoFinalizer"/>
<module name="MissingDeprecated"/>
</module>
</module>

44
pom.xml
View File

@ -63,6 +63,7 @@
<module>hbase-testing-util</module>
<module>hbase-annotations</module>
<module>hbase-rest</module>
<module>hbase-checkstyle</module>
</modules>
<scm>
<connection>scm:git:git://git.apache.org/hbase.git</connection>
@ -664,6 +665,22 @@
<protocCommand>${protoc.path}</protocCommand>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-checkstyle-plugin</artifactId>
<version>2.13</version>
<dependencies>
<dependency>
<groupId>org.apache.hbase</groupId>
<artifactId>hbase-checkstyle</artifactId>
<version>${project.version}</version>
</dependency>
</dependencies>
<configuration>
<configLocation>hbase/checkstyle.xml</configLocation>
<suppressionsLocation>hbase/checkstyle-suppressions.xml</suppressionsLocation>
</configuration>
</plugin>
</plugins>
</pluginManagement>
<plugins>
@ -713,6 +730,21 @@
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-checkstyle-plugin</artifactId>
<dependencies>
<dependency>
<groupId>org.apache.hbase</groupId>
<artifactId>hbase-checkstyle</artifactId>
<version>${project.version}</version>
</dependency>
</dependencies>
<configuration>
<configLocation>hbase/checkstyle.xml</configLocation>
<suppressionsLocation>hbase/checkstyle-suppressions.xml</suppressionsLocation>
</configuration>
</plugin>
<!--Build the documentation. We build it twice. Once as a single page and then
again as multipage.-->
<plugin>
@ -2361,8 +2393,16 @@
</configuration>
</reportSet>
</reportSets>
</plugin>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-checkstyle-plugin</artifactId>
<version>2.13</version>
<configuration>
<configLocation>hbase/checkstyle.xml</configLocation>
<suppressionsLocation>hbase/checkstyle-suppressions.xml</suppressionsLocation>
</configuration>
</plugin>
</plugins>
</reporting>
<distributionManagement>