Annotated some class with ExcludeFromCodeCoverageGeneratedReport.
It required copying ExcludeFromCodeCoverageGeneratedReport to the
internal lib as well.
Fixes: 190839526
Fixes: 190839233
Test: echo 'In Dashboard we trust!'
Change-Id: Ic62ad4d18cc4d54ba5c0c4ef7514b7f11342dc22
diff --git a/car-internal-lib/Android.bp b/car-internal-lib/Android.bp
index 9d6aef7..2937bd1 100644
--- a/car-internal-lib/Android.bp
+++ b/car-internal-lib/Android.bp
@@ -28,5 +28,6 @@
"src/com/android/car/internal/SystemConstants.java",
"src/com/android/car/internal/ICarServiceHelper.aidl",
"src/com/android/car/internal/ICarSystemServerClient.aidl",
+ "src/com/android/car/internal/testing/ExcludeFromCodeCoverageGeneratedReport.java",
],
}
diff --git a/car-internal-lib/src/com/android/car/internal/SystemConstants.java b/car-internal-lib/src/com/android/car/internal/SystemConstants.java
index 0025ea7..88356f1 100644
--- a/car-internal-lib/src/com/android/car/internal/SystemConstants.java
+++ b/car-internal-lib/src/com/android/car/internal/SystemConstants.java
@@ -15,6 +15,10 @@
*/
package com.android.car.internal;
+import static com.android.car.internal.testing.ExcludeFromCodeCoverageGeneratedReport.BOILERPLATE_CODE;
+
+import com.android.car.internal.testing.ExcludeFromCodeCoverageGeneratedReport;
+
/**
* Provides common constants for CarService, CarServiceHelperService and other packages.
*/
@@ -22,6 +26,8 @@
public static final String ICAR_SYSTEM_SERVER_CLIENT = "ICarSystemServerClient";
+ @ExcludeFromCodeCoverageGeneratedReport(reason = BOILERPLATE_CODE,
+ details = "private constructor")
private SystemConstants() {
throw new UnsupportedOperationException("contains only static constants");
}
diff --git a/car-internal-lib/src/com/android/car/internal/testing/ExcludeFromCodeCoverageGeneratedReport.java b/car-internal-lib/src/com/android/car/internal/testing/ExcludeFromCodeCoverageGeneratedReport.java
new file mode 100644
index 0000000..b13d295
--- /dev/null
+++ b/car-internal-lib/src/com/android/car/internal/testing/ExcludeFromCodeCoverageGeneratedReport.java
@@ -0,0 +1,69 @@
+/*
+ * Copyright (C) 2021 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.car.internal.testing;
+
+import android.annotation.IntDef;
+
+import com.android.car.internal.testing.ExcludeFromCodeCoverageGeneratedReport.Reason;
+
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Target;
+
+// NOTE: it's copied from car-lib but using a different package
+/**
+ * Annotation used to mark code to be excluded from coverage report.
+ */
+@Target({ElementType.TYPE, ElementType.CONSTRUCTOR, ElementType.METHOD})
+public @interface ExcludeFromCodeCoverageGeneratedReport {
+
+ // Reason annotation and its associated constant values
+ int DEPRECATED_CODE = 0;
+ int BOILERPLATE_CODE = 1;
+ int DUMP_INFO = 2;
+ int DEBUGGING_CODE = 3;
+
+ @IntDef(prefix = "REASON_", value = {
+ DEPRECATED_CODE,
+ BOILERPLATE_CODE,
+ DUMP_INFO,
+ DEBUGGING_CODE
+ })
+ @interface Reason { }
+
+ /**
+ * The reason explaining why the code is being excluded from the code coverage report.
+ * <p>
+ * Possible reasons to exclude code from coverage report are:
+ * <p><ul>
+ * <li>{@link ExcludeFromCodeCoverageGeneratedReport#DEPRECATED_CODE} to exclude deprecated
+ * code from coverage report
+ * <li>{@link ExcludeFromCodeCoverageGeneratedReport#BOILERPLATE_CODE} to exclude boilerplate
+ * code like {@link java.lang.Object} methods, {@link android.os.Parcel} methods, etc
+ * <li>{@link ExcludeFromCodeCoverageGeneratedReport#DUMP_INFO} to exclude dump info methods
+ * <li>{@link ExcludeFromCodeCoverageGeneratedReport#DEBUGGING_CODE} to exclude debugging
+ * purpose
+ * code
+ * </ul><p>
+ */
+ @Reason int reason();
+
+ /**
+ * Optional field used to provide extra details about the excluded code (e.g. it can be used to
+ * tag a follow up bug).
+ */
+ String details() default "";
+}