diff options
author | Yohann Roussel <yroussel@google.com> | 2014-05-22 16:48:39 +0200 |
---|---|---|
committer | Yohann Roussel <yroussel@google.com> | 2014-05-23 14:46:07 +0200 |
commit | d729898a258b42fe4d1b24b3d94da3e91a744207 (patch) | |
tree | 9f04c901775a58143efe7895b030645b97a525a9 | |
parent | 84eabbb9d86d8b00abbfc3987d2fdfeab7144cb8 (diff) | |
download | toolchain_jack-d729898a258b42fe4d1b24b3d94da3e91a744207.zip toolchain_jack-d729898a258b42fe4d1b24b3d94da3e91a744207.tar.gz toolchain_jack-d729898a258b42fe4d1b24b3d94da3e91a744207.tar.bz2 |
Use annotation instead of exclude file for FindBugs.
Jack's exclude file is not deleted because of antlr generated files.
Change-Id: Ia9688b5eb75334448df024595a6d31fbed9386ae
14 files changed, 65 insertions, 84 deletions
diff --git a/jack/.settings/findbugs-exclude.xml b/jack/.settings/findbugs-exclude.xml index 16eb0cd..88a149c 100644 --- a/jack/.settings/findbugs-exclude.xml +++ b/jack/.settings/findbugs-exclude.xml @@ -1,16 +1,4 @@ <FindBugsFilter> -<Match> - <Class name="com.android.jack.Options"/> - <Bug code="UrF"/> -</Match> -<Match> - <Class name="com.android.jack.shrob.shrink.Tracer"/> - <Bug code="EC"/> -</Match> -<Match> - <Class name="com.android.jack.shrob.obfuscation.annotation.RemoveThrownException"/> - <Bug code="Nm"/> -</Match> <!-- Ignore Antlr generated files --> <Match> <Class name="~com\.android\.jack\.shrob\.proguard\.ProguardLexer.*"/> @@ -18,21 +6,4 @@ <Match> <Class name="~com\.android\.jack\.shrob\.proguard\.ProguardParser.*"/> </Match> -<!-- Removes bugs detected in test directory --> -<Match> - <Class name="com.android.jack.statistics.BlockStatisticsOnCore"/> - <Bug code="RCN"/> -</Match> -<Match> - <Class name="com.android.jack.TestTools"/> - <Bug code="RCN"/> -</Match> -<Match> - <Class name="com.android.jack.FibonacciThreeAddressTest"/> - <Bug code="RCN"/> -</Match> -<!-- Weak ref in OpenJDK loggers. --> -<Match> - <Bug code="LG"/> -</Match> </FindBugsFilter>
\ No newline at end of file diff --git a/jack/src/com/android/jack/shrob/obfuscation/annotation/RemoveThrownException.java b/jack/src/com/android/jack/shrob/obfuscation/annotation/RemoveThrownException.java index c8612b3..716d656 100644 --- a/jack/src/com/android/jack/shrob/obfuscation/annotation/RemoveThrownException.java +++ b/jack/src/com/android/jack/shrob/obfuscation/annotation/RemoveThrownException.java @@ -18,10 +18,13 @@ package com.android.jack.shrob.obfuscation.annotation; import com.android.sched.item.Description; import com.android.sched.item.Feature; +import com.android.sched.util.findbugs.SuppressFBWarnings; /** * Represents the removal of thrown exceptions of a method. */ +// Ignore: "Class <> is not derived from an Exception, even though it is named as such" +@SuppressFBWarnings("Nm") @Description("The removal of thrown exceptions of a method") public class RemoveThrownException implements Feature { diff --git a/jack/src/com/android/jack/shrob/shrink/Tracer.java b/jack/src/com/android/jack/shrob/shrink/Tracer.java index 6815057..cb483a8 100644 --- a/jack/src/com/android/jack/shrob/shrink/Tracer.java +++ b/jack/src/com/android/jack/shrob/shrink/Tracer.java @@ -61,6 +61,7 @@ import com.android.jack.ir.ast.JVisitor; import com.android.jack.ir.ast.marker.ThrownExceptionMarker; import com.android.sched.item.Description; import com.android.sched.marker.LocalMarkerManager; +import com.android.sched.util.findbugs.SuppressFBWarnings; import com.android.sched.util.log.LoggerFactory; import com.android.sched.util.log.TracerFactory; @@ -272,6 +273,10 @@ public abstract class Tracer extends JVisitor { } } + /* Ignore: "Using pointer equality to compare a com.android.jack.ir.ast.JAnnotation with a + * com.android.jack.ir.ast.JDefinedClassOrInterface" + */ + @SuppressFBWarnings("EC") protected void trace(@Nonnull JAnnotationLiteral al) { JAnnotation type = al.getType(); trace(type); diff --git a/jack/tests/com/android/jack/FibonacciThreeAddressTest.java b/jack/tests/com/android/jack/FibonacciThreeAddressTest.java index fc39b4c..b903e87 100644 --- a/jack/tests/com/android/jack/FibonacciThreeAddressTest.java +++ b/jack/tests/com/android/jack/FibonacciThreeAddressTest.java @@ -22,6 +22,7 @@ import com.android.jack.ir.ast.JDefinedClassOrInterface; import com.android.jack.ir.ast.JSession; import com.android.jack.scheduling.marker.DexFileMarker; import com.android.jack.util.FileUtils; +import com.android.sched.util.findbugs.SuppressFBWarnings; import junit.framework.Assert; @@ -64,6 +65,8 @@ public class FibonacciThreeAddressTest { * Verifies that FibonacciThreeAddress can be compiled into a {@code DexFile} containing * {@code ClassDefItem}. */ + // Ignore: "Nullcheck <> of value previously dereferenced" + @SuppressFBWarnings("RCN") @Test public void testBuildFiboDexFile() throws Exception { Options fiboArgs = TestTools.buildCommandLineArgs(JAVA_FILEPATH); diff --git a/jack/tests/com/android/jack/statistics/BlockStatisticsOnCore.java b/jack/tests/com/android/jack/statistics/BlockStatisticsOnCore.java index 3f2919d..7ebb474 100644 --- a/jack/tests/com/android/jack/statistics/BlockStatisticsOnCore.java +++ b/jack/tests/com/android/jack/statistics/BlockStatisticsOnCore.java @@ -30,6 +30,7 @@ import com.android.sched.scheduler.Request; import com.android.sched.scheduler.SchedulableManager; import com.android.sched.scheduler.Scheduler; import com.android.sched.scheduler.SubPlanBuilder; +import com.android.sched.util.findbugs.SuppressFBWarnings; import junit.framework.Assert; @@ -45,6 +46,8 @@ public class BlockStatisticsOnCore { BlockStatisticsOnCore.class.getClassLoader().setDefaultAssertionStatus(true); } + // Ignore: "Nullcheck of value previously dereferenced" + @SuppressFBWarnings("RCN") @Test public void computeBlockStatOnCore() throws Exception { Options compilerArgs = TestTools.buildCommandLineArgs(null, null, diff --git a/sched/.settings/edu.umd.cs.findbugs.core.prefs b/sched/.settings/edu.umd.cs.findbugs.core.prefs index a339adf..cab9904 100644 --- a/sched/.settings/edu.umd.cs.findbugs.core.prefs +++ b/sched/.settings/edu.umd.cs.findbugs.core.prefs @@ -1,5 +1,5 @@ #FindBugs User Preferences -#Fri Feb 28 14:55:03 CET 2014 +#Thu May 22 15:37:22 CEST 2014 cloud_id=edu.umd.cs.findbugs.cloud.doNothingCloud detectorAppendingToAnObjectOutputStream=AppendingToAnObjectOutputStream|true detectorAtomicityProblem=AtomicityProblem|true @@ -128,7 +128,6 @@ detectorWrongMapIterator=WrongMapIterator|true detectorXMLFactoryBypass=XMLFactoryBypass|true detector_threshold=2 effort=default -excludefilter0=.settings/findbugs-exclude.xml|true filter_settings=Medium|BAD_PRACTICE,CORRECTNESS,EXPERIMENTAL,MALICIOUS_CODE,MT_CORRECTNESS,PERFORMANCE,SECURITY,STYLE|false|20 filter_settings_neg=NOISE,I18N| run_at_full_build=true diff --git a/sched/.settings/findbugs-exclude.xml b/sched/.settings/findbugs-exclude.xml deleted file mode 100644 index e21c2b2..0000000 --- a/sched/.settings/findbugs-exclude.xml +++ /dev/null @@ -1,52 +0,0 @@ -<FindBugsFilter> -<!-- Nonnull field is actually initialized during construction, in a private method --> -<Match> - <Class name="com.android.sched.scheduler.ManagedRunnable"/> - <Method name="<init>"/> - <Bug pattern="NP_NONNULL_FIELD_NOT_INITIALIZED_IN_CONSTRUCTOR"/> -</Match> -<!-- Nonnull field is actually initialized during construction, in a private method --> -<Match> - <Class name="com.android.sched.marker.ManagedMarker"/> - <Method name="<init>"/> - <Bug pattern="NP_NONNULL_FIELD_NOT_INITIALIZED_IN_CONSTRUCTOR"/> -</Match> -<!-- We want to call System.gc() for memory measurement purposes --> -<Match> - <Class name="com.android.sched.util.log.tracer.probe.HeapMemoryProbe"/> - <Bug pattern="DM_GC"/> -</Match> -<!-- See inlined comment in source file --> -<Match> - <Class name="com.android.sched.scheduler.MultiWorkersScheduleInstance$Worker"/> - <Bug pattern="IS2_INCONSISTENT_SYNC"/> -</Match> -<!-- See inlined comment in source file --> -<Match> - <Class name="com.android.sched.util.log.stats.SampleImpl"/> - <Bug pattern="IS2_INCONSISTENT_SYNC"/> -</Match> -<!-- See inlined comment in source file --> -<Match> - <Class name="com.android.sched.util.table.AbstractTable"/> - <Bug pattern="EI_EXPOSE_REP"/> -</Match> -<!-- Unused public fields only for test --> -<Match> - <Class name="com.android.sched.config.OptionBoolean"/> - <Bug code="UrF"/> -</Match> -<Match> - <Class name="com.android.sched.config.OptionModule1"/> - <Bug code="UrF"/> -</Match> -<Match> - <Class name="com.android.sched.config.OptionReference"/> - <Bug code="UrF"/> -</Match> -<Match> - <Class name="com.android.sched.config.CommonModule"/> - <Bug code="UuF"/> -</Match> -</FindBugsFilter> - diff --git a/sched/src/com/android/sched/marker/ManagedMarker.java b/sched/src/com/android/sched/marker/ManagedMarker.java index cba15c2..3496f49 100644 --- a/sched/src/com/android/sched/marker/ManagedMarker.java +++ b/sched/src/com/android/sched/marker/ManagedMarker.java @@ -18,6 +18,7 @@ package com.android.sched.marker; import com.android.sched.item.Description; import com.android.sched.item.Items; +import com.android.sched.util.findbugs.SuppressFBWarnings; import com.android.sched.util.log.LoggerFactory; import java.lang.reflect.InvocationTargetException; @@ -83,6 +84,8 @@ public class ManagedMarker { } } + // Nonnull field is actually initialized during construction, in a private method + @SuppressFBWarnings("NP_NONNULL_FIELD_NOT_INITIALIZED_IN_CONSTRUCTOR") public ManagedMarker(@Nonnull Class<? extends Marker> marker) throws MarkerNotConformException { this.marker = marker; this.name = Items.getName(marker); diff --git a/sched/src/com/android/sched/scheduler/ManagedRunnable.java b/sched/src/com/android/sched/scheduler/ManagedRunnable.java index 333e784..7079dd7 100644 --- a/sched/src/com/android/sched/scheduler/ManagedRunnable.java +++ b/sched/src/com/android/sched/scheduler/ManagedRunnable.java @@ -33,6 +33,7 @@ import com.android.sched.schedulable.Transform; import com.android.sched.schedulable.Use; import com.android.sched.schedulable.With; import com.android.sched.util.Reflect; +import com.android.sched.util.findbugs.SuppressFBWarnings; import com.android.sched.util.log.LoggerFactory; import java.lang.reflect.ParameterizedType; @@ -101,6 +102,8 @@ public class ManagedRunnable extends ManagedSchedulable { @Nonnull private Class<? extends Component> schedulableOn; + // Nonnull field is actually initialized during construction, in a private method + @SuppressFBWarnings("NP_NONNULL_FIELD_NOT_INITIALIZED_IN_CONSTRUCTOR") public ManagedRunnable( @Nonnull Class<? extends ProcessorSchedulable<? extends Component>> runnable) throws SchedulableNotConformException { diff --git a/sched/src/com/android/sched/scheduler/MultiWorkersScheduleInstance.java b/sched/src/com/android/sched/scheduler/MultiWorkersScheduleInstance.java index 64da80f..9399c99 100644 --- a/sched/src/com/android/sched/scheduler/MultiWorkersScheduleInstance.java +++ b/sched/src/com/android/sched/scheduler/MultiWorkersScheduleInstance.java @@ -29,6 +29,7 @@ import com.android.sched.util.config.ThreadConfig; import com.android.sched.util.config.id.BooleanPropertyId; import com.android.sched.util.config.id.IntegerPropertyId; import com.android.sched.util.config.id.ReflectFactoryPropertyId; +import com.android.sched.util.findbugs.SuppressFBWarnings; import com.android.sched.util.log.LoggerFactory; import java.lang.management.LockInfo; @@ -111,11 +112,11 @@ public class MultiWorkersScheduleInstance<T extends Component> } /* - * FINDBUGS * Synchronized blocks are to maintain atomicity when writing currentTask and currentTaskStartOn * fields. By this way, the synchronized getStatus() method retrieves a coherent view. No other * concurrent access to currentTask and currentTaskStartOn fields are allowed. */ + @SuppressFBWarnings("IS2_INCONSISTENT_SYNC") @Override public void run() { while (true) { diff --git a/sched/src/com/android/sched/util/findbugs/SuppressFBWarnings.java b/sched/src/com/android/sched/util/findbugs/SuppressFBWarnings.java new file mode 100644 index 0000000..57b8b7a --- /dev/null +++ b/sched/src/com/android/sched/util/findbugs/SuppressFBWarnings.java @@ -0,0 +1,34 @@ +/* + * Copyright (C) 2014 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. + */ + +package com.android.sched.util.findbugs; + +import java.lang.annotation.ElementType; +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; +import java.lang.annotation.Target; + +/** + * Indicate to FindBugs that a warning should be ignored. + */ +@Retention(RetentionPolicy.CLASS) +@Target({ElementType.TYPE, ElementType.FIELD, ElementType.METHOD, ElementType.PARAMETER, + ElementType.CONSTRUCTOR, ElementType.PACKAGE}) +public @interface SuppressFBWarnings { + /** Names of the warnings to ignore */ + String[] value(); + String justification() default ""; +} diff --git a/sched/src/com/android/sched/util/log/stats/SampleImpl.java b/sched/src/com/android/sched/util/log/stats/SampleImpl.java index 50d609b..b537185 100644 --- a/sched/src/com/android/sched/util/log/stats/SampleImpl.java +++ b/sched/src/com/android/sched/util/log/stats/SampleImpl.java @@ -18,6 +18,7 @@ package com.android.sched.util.log.stats; import com.google.common.collect.Iterators; +import com.android.sched.util.findbugs.SuppressFBWarnings; import com.android.sched.util.table.DataHeader; import com.android.sched.util.table.DataRow; @@ -30,6 +31,8 @@ import javax.annotation.Nonnull; /** * Simple statistic computation on a set of values. */ +// Ignore: "Inconsistent synchronization" +@SuppressFBWarnings("IS2_INCONSISTENT_SYNC") public class SampleImpl extends Sample implements DataRow, DataHeader { @Nonnegative private int count; diff --git a/sched/src/com/android/sched/util/log/tracer/probe/HeapMemoryProbe.java b/sched/src/com/android/sched/util/log/tracer/probe/HeapMemoryProbe.java index 89d6108..5cc91c6 100644 --- a/sched/src/com/android/sched/util/log/tracer/probe/HeapMemoryProbe.java +++ b/sched/src/com/android/sched/util/log/tracer/probe/HeapMemoryProbe.java @@ -17,6 +17,7 @@ package com.android.sched.util.log.tracer.probe; import com.android.sched.util.codec.ImplementationName; +import com.android.sched.util.findbugs.SuppressFBWarnings; import java.lang.management.ManagementFactory; import java.lang.management.MemoryMXBean; @@ -42,6 +43,8 @@ public class HeapMemoryProbe extends MemoryBytesProbe { } } + // We want to call System.gc() for memory measurement purposes + @SuppressFBWarnings("DM_GC") @Override @Nonnegative public long read() { diff --git a/sched/src/com/android/sched/util/table/AbstractTable.java b/sched/src/com/android/sched/util/table/AbstractTable.java index 9577382..855c16e 100644 --- a/sched/src/com/android/sched/util/table/AbstractTable.java +++ b/sched/src/com/android/sched/util/table/AbstractTable.java @@ -17,6 +17,7 @@ package com.android.sched.util.table; import com.android.sched.util.codec.Formatter; +import com.android.sched.util.findbugs.SuppressFBWarnings; import java.util.Iterator; @@ -52,6 +53,7 @@ public abstract class AbstractTable implements Table { * formatters outside. These modifications are only local to this table and will not be reflected * in any other Table or DataHeader. */ + @SuppressFBWarnings("EI_EXPOSE_REP") @Override @Nonnull public Formatter<?>[] getFormatters() { |