diff options
author | Mike Dodd <mdodd@google.com> | 2015-08-11 11:16:59 -0700 |
---|---|---|
committer | Mike Dodd <mdodd@google.com> | 2015-08-12 12:47:26 -0700 |
commit | d3b009ae55651f1e60950342468e3c37fdeb0796 (patch) | |
tree | bc4b489af52d0e2521e21167d2ad76a47256f348 /build | |
parent | ef8c7abbcfc9c770385d6609a4b4bc70240ebdc4 (diff) | |
download | packages_apps_Messaging-d3b009ae55651f1e60950342468e3c37fdeb0796.zip packages_apps_Messaging-d3b009ae55651f1e60950342468e3c37fdeb0796.tar.gz packages_apps_Messaging-d3b009ae55651f1e60950342468e3c37fdeb0796.tar.bz2 |
Initial checkin of AOSP Messaging app.
b/23110861
Change-Id: I11db999bd10656801e618f78ab2b2ef74136fff1
Diffstat (limited to 'build')
-rw-r--r-- | build/README | 8 | ||||
-rw-r--r-- | build/android_lint.mk | 59 | ||||
-rw-r--r-- | build/android_lint.xslt | 40 | ||||
-rwxr-xr-x | build/colorize_errors.py | 42 | ||||
-rw-r--r-- | build/gcheckstyle.mk | 45 | ||||
-rw-r--r-- | build/gcheckstyle/google-style-checker_deploy.jar | bin | 0 -> 3621944 bytes | |||
-rw-r--r-- | build/gcheckstyle/tools/java/checkstyle/googlestyle-5.0.xml | 411 | ||||
-rwxr-xr-x | build/process_style_output.py | 38 |
8 files changed, 643 insertions, 0 deletions
diff --git a/build/README b/build/README new file mode 100644 index 0000000..3398014 --- /dev/null +++ b/build/README @@ -0,0 +1,8 @@ +Files in this folder are build extensions specific to the Bugle project, but currently could be merged into the core Android build. + +gcheckstyle is a tool from google3 to validate java from google3. The config file is baked into the jar, but can be updated with a little hackery. + +Files last pulled around CL 66008148: +gcheckstyle/tools/java/checkstyle/googlestyle-5.0.xml is the config file which came from /home/build/nonconf/google3/tools/java/checkstyle and was modified to use Android specific styles. It must keep the same name and path in order to correctly update the jar + +google-style-checker_deploy.jar is pulled from the build share at /google/data/ro/teams/devtools/glint/linters/live/google-style-checker_deploy.jar and can be pulled from there as needed. diff --git a/build/android_lint.mk b/build/android_lint.mk new file mode 100644 index 0000000..3a9a3d7 --- /dev/null +++ b/build/android_lint.mk @@ -0,0 +1,59 @@ +# Copyright (C) 2015 The Android Open Source Project +# +# Licensed 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. + +# Android lint checks for common code/resource errors specific to Android + +# Lint tool expects the intermediates dir to match the project name Bugle rather +# than $(LOCAL_PACKAGE_NAME) which is messaging +# Create a symbolic link to redirect the tool +$(LOCAL_PACKAGE_NAME)BUGLE_RENAME := $(subst $(LOCAL_PACKAGE_NAME)_intermediates,Bugle_intermediates,$(intermediates.COMMON)) +$($(LOCAL_PACKAGE_NAME)BUGLE_RENAME): SOURCE_PATH := $(abspath $(intermediates.COMMON)/) +$($(LOCAL_PACKAGE_NAME)BUGLE_RENAME): DST_PATH := $($(LOCAL_PACKAGE_NAME)BUGLE_RENAME) +$($(LOCAL_PACKAGE_NAME)BUGLE_RENAME) : + ln -f -s $(SOURCE_PATH) $(DST_PATH) + +# Lint tool expects api-versions.xml from the SDK to be in development/sdk but +# it's not. Create a symbolic link to the android SDK to fix it +API_VERSIONS_XML := $(abspath development/sdk/api-versions.xml) +$(API_VERSIONS_XML): + ln -f -s $(abspath prebuilts/fullsdk/linux/platform-tools/api/api-versions.xml) $(API_VERSIONS_XML) + +# The output xml file from the lint tool +$(LOCAL_PACKAGE_NAME)LINT_XML := $(intermediates.COMMON)/$(LOCAL_PACKAGE_NAME)_android_lint.xml + +# The transformed text file from the output xml +$(LOCAL_PACKAGE_NAME)LINT_TXT := $(intermediates.COMMON)/$(LOCAL_PACKAGE_NAME)_android_lint.txt + +# Creates the output xml from the lint tool by running the linting tool if the +# package has been updated +$($(LOCAL_PACKAGE_NAME)LINT_XML): PRIVATE_PATH := $(LOCAL_PATH) +$($(LOCAL_PACKAGE_NAME)LINT_XML): LINT_CMD = $(LINT) --quiet -Wall --disable UnusedIds,UnusedResources,MissingTranslation $(PRIVATE_PATH) +$($(LOCAL_PACKAGE_NAME)LINT_XML) : $(LOCAL_BUILT_MODULE) $($(LOCAL_PACKAGE_NAME)BUGLE_RENAME) $(API_VERSIONS_XML) + $(LINT_CMD) --xml $@ > /dev/null + +# Creates the transformed text file from the output xml by running an xslt on it +# which filters out issues from the support library and formats it for console +# output +$($(LOCAL_PACKAGE_NAME)LINT_TXT): PRIVATE_PATH := $(LOCAL_PATH) +$($(LOCAL_PACKAGE_NAME)LINT_TXT): INPUT := $($(LOCAL_PACKAGE_NAME)LINT_XML) +$($(LOCAL_PACKAGE_NAME)LINT_TXT): XSLT_CMD = xsltproc $(PRIVATE_PATH)/build/android_lint.xslt $(INPUT) +$($(LOCAL_PACKAGE_NAME)LINT_TXT) : $($(LOCAL_PACKAGE_NAME)LINT_XML) + $(hide) $(XSLT_CMD) > $@ + +# The root of the lint rule which just prints the lint errors txt file to the +# console +$(LOCAL_PACKAGE_NAME)lint: PRIVATE_PATH := $(LOCAL_PATH) +$(LOCAL_PACKAGE_NAME)lint :: $($(LOCAL_PACKAGE_NAME)LINT_TXT) + $(hide) $(PRIVATE_PATH)/build/colorize_errors.py < $< + diff --git a/build/android_lint.xslt b/build/android_lint.xslt new file mode 100644 index 0000000..d0ddc1c --- /dev/null +++ b/build/android_lint.xslt @@ -0,0 +1,40 @@ +<!-- + Copyright (C) 2015 The Android Open Source Project + + Licensed 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. +--> +<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> +<xsl:output method="text" version="1.0" encoding="UTF-8" omit-xml-declaration="yes"/> +<xsl:template match="/issues"> + <xsl:for-each select="issue"> + <!-- Exclude errors/warnings with + /android/support in the location, these are outside our control + /com/google/common in the location, these are outside our control + res/values- in the location, these are localized resources, and we only need to be notified of the neutral resource issues + .class in the location, these don't have source we can do anything about --> + <xsl:if test="not(./location) or (not(contains(./location/@file, '/android/support/')) and not(contains(./location/@file, '/com/google/common/')) and not(starts-with(./location/@file, 'res/values-')) and not(contains(./location/@file, '.class')))"> + <xsl:value-of select="@severity" />: <xsl:value-of select="@message" disable-output-escaping="yes"/><xsl:text> </xsl:text>[<xsl:value-of select="@id" />]<xsl:text>
</xsl:text> + <xsl:for-each select="./location"> + <xsl:text> </xsl:text><xsl:value-of select="@file" /> + <xsl:if test="@line"> + <xsl:text>:</xsl:text><xsl:value-of select="@line" /> + <xsl:if test="@column"> + <xsl:text>,</xsl:text><xsl:value-of select="@column" /> + </xsl:if> + </xsl:if> + <xsl:text>
</xsl:text> + </xsl:for-each> + </xsl:if> + </xsl:for-each> +</xsl:template> +</xsl:stylesheet> diff --git a/build/colorize_errors.py b/build/colorize_errors.py new file mode 100755 index 0000000..e33edc0 --- /dev/null +++ b/build/colorize_errors.py @@ -0,0 +1,42 @@ +#!/usr/bin/python +# Copyright (C) 2015 The Android Open Source Project +# +# Licensed 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. +# +# Given an input stream look for Error: and Warning: lines and colorize those to +# the output + +import fileinput +import re +import sys + +RED = "\033[31m" +YELLOW = "\033[33m" +RESET = "\033[0m" + +ERROR = re.compile(r"^Error:") +WARNING = re.compile(r"^Warning:") +STARTS_WITH_WS = re.compile(r"^\s") + +for line in fileinput.input(): + if ERROR.match(line): + print RED + line, + elif WARNING.match(line): + print YELLOW + line, + elif STARTS_WITH_WS.match(line): + # If the line starts with a space use the same coloring as the previous line + print line, + else: + print RESET + line, +print RESET + diff --git a/build/gcheckstyle.mk b/build/gcheckstyle.mk new file mode 100644 index 0000000..61890ee --- /dev/null +++ b/build/gcheckstyle.mk @@ -0,0 +1,45 @@ +# Copyright (C) 2015 The Android Open Source Project +# +# Licensed 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. + +# The config file to use when checking style issues +STYLE_CONFIG := $(LOCAL_PATH)/build/gcheckstyle/tools/java/checkstyle/googlestyle-5.0.xml + +# The jar file to use to perform the checking +STYLE_JAR := $(LOCAL_PATH)/build/gcheckstyle/google-style-checker_deploy.jar + +# The output file to cache the results of style error checking +$(LOCAL_PACKAGE_NAME)STYLE_ERRORS_TXT := $(intermediates.COMMON)/$(LOCAL_PACKAGE_NAME)_style_errors.txt + +# The set of input files to check +$(LOCAL_PACKAGE_NAME)JAVA_FILES = $(shell find $(LOCAL_PATH)/src/ -name '*.java') + +# Updates the JAR file with the new config if the config has changed +# The config file has to be packaged into the jar, and jar uf command expects the current working directory +# to match the jar structure +$(STYLE_JAR): PRIVATE_PATH := $(LOCAL_PATH) +$(STYLE_JAR) : $(STYLE_CONFIG) + $(hide) pushd $(PRIVATE_PATH)/build/gcheckstyle && \ + jar uf google-style-checker_deploy.jar tools/java/checkstyle/googlestyle-5.0.xml && \ + popd + +# Rebuilds the style errors text if the style checker or any of the java files have changed +# FLAG: It may be more efficient to cache individual file results rather than grouping them all together +$($(LOCAL_PACKAGE_NAME)STYLE_ERRORS_TXT): SOURCES := $($(LOCAL_PACKAGE_NAME)JAVA_FILES) +$($(LOCAL_PACKAGE_NAME)STYLE_ERRORS_TXT) : $($(LOCAL_PACKAGE_NAME)JAVA_FILES) $(STYLE_JAR) + $(hide) -/usr/local/buildtools/java/jdk/bin/java -jar $(STYLE_JAR) $(SOURCES) > $@ + +# The root of the lint rule which just prints the style errors txt file to the console +$(LOCAL_PACKAGE_NAME)lint :: $($(LOCAL_PACKAGE_NAME)STYLE_ERRORS_TXT) + $(hide) $(PRIVATE_PATH)/build/process_style_output.py -omit $(abspath $(PRIVATE_PATH))/ < $< | $(PRIVATE_PATH)/build/colorize_errors.py + diff --git a/build/gcheckstyle/google-style-checker_deploy.jar b/build/gcheckstyle/google-style-checker_deploy.jar Binary files differnew file mode 100644 index 0000000..86afcbc --- /dev/null +++ b/build/gcheckstyle/google-style-checker_deploy.jar diff --git a/build/gcheckstyle/tools/java/checkstyle/googlestyle-5.0.xml b/build/gcheckstyle/tools/java/checkstyle/googlestyle-5.0.xml new file mode 100644 index 0000000..6960849 --- /dev/null +++ b/build/gcheckstyle/tools/java/checkstyle/googlestyle-5.0.xml @@ -0,0 +1,411 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- + Copyright (C) 2015 The Android Open Source Project + + Licensed 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. +--> +<!DOCTYPE module PUBLIC + "-//Puppy Crawl//DTD Check Configuration 1.3//EN" + "http://www.puppycrawl.com/dtds/configuration_1_3.dtd"> + +<!-- This is a checkstyle configuration file. For descriptions of +what the following rules do, please see the checkstyle configuration +page at http://checkstyle.sourceforge.net/config.html --> + +<!-- Checks with numbered comments refer to recommendations made +by Joshua Bloch in his book Effective Java --> + +<module name="Checker"> + <property name="charset" value="UTF-8"/> + <module name="SuppressionCommentFilter"/> + <module name="SuppressionCommentFilter"> + <property name="offCommentFormat" value="__Generated_"/> + <property name="onCommentFormat" value="END GENERATED CODE"/> + </module> + <module name="FileTabCharacter"> + <!-- Checks that there are no tab characters in the file. + --> + </module> + + <module name="RegexpSingleline"> + <!-- Checks that FIXME is not used in comments. TODO is preferred. + --> + <property name="format" value="((//.*)|(\*.*))FIXME" /> + <property name="message" value='TODO is preferred to FIXME. e.g. "TODO(johndoe): Refactor when v2 is released."' /> + </module> + + <module name="RegexpSingleline"> + <!-- Checks that TODOs are properly formatted. + + The (?<!TODO\(.{0,100}) makes the regex ignore any secondary TODO's on the line + so that things like //TODO(bob): remove this TODO on 1/1/2020 don't trigger a warning + because of the second TODO. (The {0,100} is because java doesn't recoginize arbitrary + length look backs, but we know each java line should be < 100 chars.) + --> + <property name="format" value="((//.*)|(\*.*))(?<!TODO\(.{0,100})(TODO[^(])|(TODO\([^)]*$)" /> + <property name="message" value='All TODOs should be named. e.g. "TODO(johndoe): Refactor when v2 is released."' /> + </module> + + + <!-- All Java AST specific tests live under TreeWalker module. --> + <module name="TreeWalker"> + <module name="FileContentsHolder"/> + <!--module name="SuppressWarningsFilter" /--> + <!--module name="SuppressWarningsHolder" /--> + <!-- + + IMPORT CHECKS + + --> + + <module name="RedundantImport"> + <property name="severity" value="error"/> + </module> + + <module name="AvoidStarImport"> + <property name="severity" value="error"/> + </module> + + <module name="UnusedImports"> + <!-- DPL is a notable violator of this rule. --> + <property name="severity" value="error"/> + <!-- Imports used only in Javadoc are tolerated. See http://b/838496 --> + <property name="processJavadoc" value="true"/> + <message + key="import.unused" + value="Unused import: {0}." /> + </module> + + <module name="checkstyle.patches.checks.imports.ImportOrder"> + <!-- Checks for out of order import statements. --> + + <metadata name="altname" value="ImportOrder"/> + <property name="severity" value="warning"/> + <property name="groups" value="android,com.android,com.google,*,java,javax"/> + <!-- This ensures that static imports go first. --> + <property name="option" value="top"/> + <property name="tokens" value="STATIC_IMPORT, IMPORT"/> + <message + key="import.ordering" + value="Wrong order for {0} import." /> + </module> + + <!-- Checks that nested classes are not statically imported. --> + <module name="com.google.devtools.checkstyle.checks.imports.StaticImportNestedClassCheck"> + <metadata name="altname" value="StaticImportNestedClass"/> + <property name="severity" value="warning"/> + <message key="import.staticNestedClass" + value="Use of static import for nested classes is disallowed."/> + </module> + + <!-- + + JAVADOC CHECKS + + --> + + <module name="com.google.devtools.checkstyle.checks.javadoc.GoogleJavadocTypeCheck"> + <!-- Item 28 - Write doc comments for all exposed API elements. --> + <!-- Ensure all classes with visability greater than or equal to + protected have class level documentation. --> + <property name="scope" value="protected"/> + <property name="severity" value="ignore"/> + <!-- Style guide doesn't prohibit custom tags. Typos will be caught by other tools. --> + <property name="allowUnknownTags" value="true"/> + <property name="allowMissingParamTags" value="true"/> + </module> + + <!-- + + NAMING CHECKS + + --> + + <!-- Item 38 - Adhere to generally accepted naming conventions --> + + <module name="PackageName"> + <!-- Validates identifiers for package names against the + supplied expression. --> + <!-- Here the default checkstyle rule restricts package name parts to + seven characters, this is not in line with common practice at Google. + --> + <property name="format" value="^[a-z]+(\.[a-z][a-z0-9]{1,})*$"/> + <property name="severity" value="warning"/> + </module> + + <module name="TypeNameCheck"> + <!-- Validates static, final fields against the + expression "^[A-Z][a-zA-Z0-9]*$". --> + <metadata name="altname" value="TypeName"/> + <property name="severity" value="warning"/> + </module> + + <module name="com.google.devtools.checkstyle.checks.coding.ConstantNameCheck"> + <!-- Validates that constant fields are named in ALL_CAPS. --> + <metadata name="altname" value="ConstantName"/> + <property name="applyToPublic" value="true"/> + <property name="applyToProtected" value="true"/> + <property name="applyToPackage" value="true"/> + <property name="applyToPrivate" value="true"/> + <property name="format" value="^_?[A-Z][A-Z0-9]*(_[A-Z0-9]+)*$"/> + <message key="name.invalidPattern" + value="Variable ''{0}'' is a constant and thus should be in ALL_CAPS."/> + <property name="severity" value="ignore"/> + </module> + + <module name="StaticVariableNameCheck"> + <!-- Validates static, non-final fields against the supplied + expression "^[a-z][a-zA-Z0-9]*_?$". --> + <metadata name="altname" value="StaticVariableName"/> + <property name="applyToPublic" value="true"/> + <property name="applyToProtected" value="true"/> + <property name="applyToPackage" value="true"/> + <property name="applyToPrivate" value="true"/> + <property name="format" value="^[a-z][a-zA-Z0-9]*_?$"/> + <property name="severity" value="ignore"/> + </module> + + <module name="MemberNameCheck"> + <!-- Validates non-static members against the supplied expression. --> + <metadata name="altname" value="MemberName"/> + <property name="applyToPublic" value="true"/> + <property name="applyToProtected" value="true"/> + <property name="applyToPackage" value="true"/> + <property name="applyToPrivate" value="true"/> + <!-- allows for googles deprecated foo_ member naming scheme --> + <property name="format" value="^[a-z][a-zA-Z0-9]*_?$"/> + <property name="severity" value="ignore"/> + </module> + + <module name="MethodNameCheck"> + <!-- Validates identifiers for method names. --> + <metadata name="altname" value="MethodName"/> + <property name="format" value="^[a-z][a-zA-Z0-9]*(_[a-zA-Z0-9]+)*$"/> + <property name="severity" value="warning"/> + </module> + + <module name="ParameterName"> + <!-- Validates identifiers for method parameters against the + expression "^[a-z][a-zA-Z0-9]*$". --> + <property name="severity" value="warning"/> + </module> + + <module name="LocalFinalVariableName"> + <!-- Validates identifiers for local final variables against the + expression "^[a-z][a-zA-Z0-9]*$". --> + <property name="severity" value="warning"/> + </module> + + <module name="LocalVariableName"> + <!-- Validates identifiers for local variables against the + expression "^[a-z][a-zA-Z0-9]*$". --> + <property name="severity" value="warning"/> + </module> + + + <!-- + + LENGTH and CODING CHECKS + + --> + + <module name="LineLength"> + <!-- Checks if a line is too long. --> + <property name="max" value="${com.puppycrawl.tools.checkstyle.checks.sizes.LineLength.max}" default="100"/> + <property name="severity" value="error"/> + + <!-- + The default ignore pattern exempts the following elements: + - import statements + - long URLs inside comments + - certain JSNI method signatures used in GWT, see http://wiki/Nonconf/GwtInGoogle3Faq#JsniLineBreaks. + --> + + <!-- + The JSNI/GWT exemption only is for the JNI-style signature, that cannot be split across multiple lines. + Both the instance expression and the parameter list may and must go on separate lines. + + These examples are exempt: + <pre> + private native void foo() /*-{ + // Method call, signature as the only long line (> 100 chars) + this. + @com.google.gwt.foo.bar.baz.ClassUsingJsni::someMethod(Lcom/google/gwt/foo/bar/baz/ParameterType;) + (param); + + // Static method call, signature as the only long line (> 100 chars) + @com.google.gwt.foo.bar.baz.ClassUsingJsni::staticMethod(Lcom/google/gwt/foo/bar/baz/ParameterType;) + (param); + + // Method reference in dictionary, signature as the only long line + var dict = { + key: + @com.google.gwt.foo.bar.baz.ClassUsingJsni::otherMethod(Lcom/google/gwt/foo/bar/baz/ParameterType;Z), + } + }-*/; + </pre> + + These exampls are NOT exempt, as the line can be broken further: + <pre> + private native void foo() /*-{ + // Instance expression on same line + this.@com.google.gwt.foo.bar.baz.ClassUsingJsni::someMethod(Lcom/google/gwt/foo/bar/baz/ParameterType;) + (param); + + // Parameters on same line + this. + @com.google.gwt.foo.bar.baz.ClassUsingJsni::someMethod(Lcom/google/gwt/foo/bar/baz/ParameterType;)(param); + + // All on one line + this.@com.google.gwt.foo.bar.baz.ClassUsingJsni::someMethod(Lcom/google/gwt/foo/bar/baz/ParameterType;)(param); + }-*/; + </pre> + --> + <property name="ignorePattern" + value="${com.puppycrawl.tools.checkstyle.checks.sizes.LineLength.ignorePattern}" + default="^(package .*;\s*)|(import .*;\s*)|( *\* *https?://.*)|(\s*@[\w\.\$]+::\w+(?:\([^\(]*\)|\(\)\(\))?[,;]?)|(\s+\* \{@(link|see) [^\s][^\}]*\}[\.,;]?)$"/> + </module> + + <module name="LeftCurly"> + <!-- Checks for placement of the left curly brace ('{'). --> + <property name="severity" value="warning"/> + </module> + + <module name="RightCurly"> + <!-- Checks right curlies on CATCH, ELSE, and TRY blocks are on + the same line. e.g., the following example is fine: + <pre> + if { + ... + } else + </pre> + --> + <!-- This next example is not fine: + <pre> + if { + ... + } + else + </pre> + --> + <property name="option" value="same"/> + <property name="severity" value="warning"/> + </module> + + <!-- Checks for braces around if and else blocks --> + <module name="NeedBraces"> + <property name="severity" value="warning"/> + <property name="tokens" value="LITERAL_IF, LITERAL_ELSE, LITERAL_FOR, LITERAL_WHILE, LITERAL_DO"/> + </module> + + <!-- Checks for empty catch blocks in non-test files. --> + <module name="com.google.devtools.checkstyle.checks.blocks.EmptyCatchBlockCheck"> + <metadata name="altname" value="EmptyCatchBlock"/> + <property name="severity" value="error"/> + </module> + + <module name="UpperEll"> + <!-- Checks that long constants are defined with an upper ell.--> + <property name="severity" value="error"/> + </module> + + <module name="FallThrough"> + <!-- Warn about falling through to the next case statement. Similar to + javac -Xlint:fallthrough, but the check is suppressed if there is a single-line comment + on the last non-blank line preceding the fallen-into case. + --> + <property name="reliefPattern" + value=".*"/> + <property name="severity" value="error"/> + </module> + + + <!-- + + MODIFIERS CHECKS + + --> + + <module name="ModifierOrder"> + <!-- Warn if modifier order is inconsistent with JLS3 8.1.1, 8.3.1, and + 8.4.3. The prescribed order is: + public, protected, private, abstract, static, final, transient, volatile, + synchronized, native, strictfp + --> + </module> + + + <!-- + + WHITESPACE CHECKS + + --> + + <module name="WhitespaceAround"> + <!-- Checks that various tokens are surrounded by whitespace. + This includes most binary operators and keywords followed + by regular or curly braces. + --> + <property name="tokens" value="ASSIGN, BAND, BAND_ASSIGN, BOR, + BOR_ASSIGN, BSR, BSR_ASSIGN, BXOR, BXOR_ASSIGN, COLON, DIV, DIV_ASSIGN, + EQUAL, GE, GT, LAND, LE, LITERAL_CATCH, LITERAL_DO, LITERAL_ELSE, + LITERAL_FINALLY, LITERAL_FOR, LITERAL_IF, LITERAL_RETURN, + LITERAL_SYNCHRONIZED, LITERAL_TRY, LITERAL_WHILE, LOR, LT, MINUS, + MINUS_ASSIGN, MOD, MOD_ASSIGN, NOT_EQUAL, PLUS, PLUS_ASSIGN, QUESTION, + SL, SL_ASSIGN, SR_ASSIGN, STAR, STAR_ASSIGN"/> + <property name="severity" value="error"/> + <property name="ignoreEnhancedForColon" value="false"/> + </module> + + <module name="WhitespaceAfter"> + <!-- Checks that commas, semicolons and typecasts are followed by + whitespace. + --> + <property name="tokens" value="COMMA, SEMI, TYPECAST"/> + </module> + + <module name="NoWhitespaceAfter"> + <!-- Checks that there is no whitespace after various unary operators. + Linebreaks are allowed. + --> + <property name="tokens" value="BNOT, DEC, DOT, INC, LNOT, UNARY_MINUS, + UNARY_PLUS"/> + <property name="allowLineBreaks" value="true"/> + <property name="severity" value="error"/> + </module> + + <module name="NoWhitespaceBefore"> + <!-- Checks that there is no whitespace before various unary operators. + Linebreaks are allowed. + --> + <property name="tokens" value="SEMI, DOT, POST_DEC, POST_INC"/> + <property name="allowLineBreaks" value="true"/> + <property name="severity" value="error"/> + </module> + + <module name="ParenPad"> + <!-- Checks that there is no whitespace before close parens or after + open parens. + --> + <property name="severity" value="warning"/> + </module> + + <!-- + + MISC CHECKS + + --> + + </module> +</module> + diff --git a/build/process_style_output.py b/build/process_style_output.py new file mode 100755 index 0000000..63ca9a0 --- /dev/null +++ b/build/process_style_output.py @@ -0,0 +1,38 @@ +#!/usr/bin/python +# Copyright (C) 2015 The Android Open Source Project +# +# Licensed 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. +# +# Take the output from gstylechecker and clean up into a more friendly format + +import argparse +import fileinput +import re + +parser = argparse.ArgumentParser() +parser.add_argument('-omit') +args = parser.parse_args() + +PATTERN = re.compile(r"(?P<file>[^:]+):(?P<line>\d+)(?P<column>:\d+)?:\s(?P<message>.*)") + +for line in fileinput.input([]): + match = PATTERN.match(line) + if match: + filename = match.group("file"); + if args.omit: + filename = filename.replace(args.omit, "") + message = match.group("message") + message = message[0].upper() + message[1:] + print message + print " " + filename + ':' + match.group("line") + (match.group("column") if match.group("column") else "") + |