summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorYohann Roussel <yroussel@google.com>2014-05-22 16:48:39 +0200
committerYohann Roussel <yroussel@google.com>2014-05-23 14:46:07 +0200
commitd729898a258b42fe4d1b24b3d94da3e91a744207 (patch)
tree9f04c901775a58143efe7895b030645b97a525a9
parent84eabbb9d86d8b00abbfc3987d2fdfeab7144cb8 (diff)
downloadtoolchain_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
-rw-r--r--jack/.settings/findbugs-exclude.xml29
-rw-r--r--jack/src/com/android/jack/shrob/obfuscation/annotation/RemoveThrownException.java3
-rw-r--r--jack/src/com/android/jack/shrob/shrink/Tracer.java5
-rw-r--r--jack/tests/com/android/jack/FibonacciThreeAddressTest.java3
-rw-r--r--jack/tests/com/android/jack/statistics/BlockStatisticsOnCore.java3
-rw-r--r--sched/.settings/edu.umd.cs.findbugs.core.prefs3
-rw-r--r--sched/.settings/findbugs-exclude.xml52
-rw-r--r--sched/src/com/android/sched/marker/ManagedMarker.java3
-rw-r--r--sched/src/com/android/sched/scheduler/ManagedRunnable.java3
-rw-r--r--sched/src/com/android/sched/scheduler/MultiWorkersScheduleInstance.java3
-rw-r--r--sched/src/com/android/sched/util/findbugs/SuppressFBWarnings.java34
-rw-r--r--sched/src/com/android/sched/util/log/stats/SampleImpl.java3
-rw-r--r--sched/src/com/android/sched/util/log/tracer/probe/HeapMemoryProbe.java3
-rw-r--r--sched/src/com/android/sched/util/table/AbstractTable.java2
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="&lt;init&gt;"/>
- <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="&lt;init&gt;"/>
- <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() {