xref: /aosp_15_r20/external/icu/icu4j/releases_tools/api_reports.sh (revision 0e209d3975ff4a8c132096b14b0e9364a753506e)
1#!/usr/bin/env bash
2# Copyright (C) 2023 and later: Unicode, Inc. and others.
3# License & terms of use: http://www.unicode.org/copyright.html
4
5if [ ! -f "releases_tools/shared.sh" ]; then
6  echo "ERROR: This script should be executed while being in the icu4j folder"
7  exit
8fi
9. releases_tools/shared.sh
10
11# ====================================================================================
12# The start of the script proper
13
14reportTitle "Checking the JDK version (must be 8)"
15checkThatJdk8IsDefault
16
17# ====================================================================================
18
19reportTitle gatherapi :: Collect API information
20
21mvn clean -q --batch-mode
22# Build everything
23mvn install -q --batch-mode -DskipITs -DskipTests
24# Gather API info
25mvn site -q  --batch-mode -DskipITs -DskipTests -P gatherapi > /dev/null
26
27checkFileCreated "${out_dir}/icu4j${api_report_version}.api3.gz"
28
29# Prepare classpath folder to run the tools
30copyDependencyArtifacts
31
32# ====================================================================================
33
34reportTitle apireport :: Run API report generator tool
35
36java -cp "$toolcp" \
37    com.ibm.icu.dev.tool.docs.ReportAPI \
38    -old: tools/build/icu4j${api_report_prev_version}.api3.gz \
39    -new: ${out_dir}/icu4j${api_report_version}.api3.gz \
40    -html \
41    -out: ${out_dir}/icu4j_compare_${api_report_prev_version}_${api_report_version}.html
42
43checkFileCreated "${out_dir}/icu4j_compare_${api_report_prev_version}_${api_report_version}.html"
44
45# ====================================================================================
46
47reportTitle checkDeprecated :: Check consistency between javadoc @deprecated and @Deprecated annotation
48
49java -cp "$toolcp" \
50    com.ibm.icu.dev.tool.docs.DeprecatedAPIChecker \
51        ${out_dir}/icu4j${api_report_version}.api3.gz
52
53# ====================================================================================
54
55reportTitle checkAPIStatusConsistency :: Check consistency between API class status and methods overriding java.lang.Object
56
57# If you need classes excluded from this check, define following property in build-local.properties.
58# e.g. checkAPIStatusConsistency.skip.classes=com.ibm.icu.text.Normalizer;com.ibm.icu.util.ULocale
59
60java -cp "$toolcp" \
61    com.ibm.icu.dev.tool.docs.APIStatusConsistencyChecker \
62        ${out_dir}/icu4j${api_report_version}.api3.gz \
63        checkAPIStatusConsistency.skip.classes=
64
65# ====================================================================================
66
67reportTitle draftAPIs :: Run API collector tool and generate draft API report in html
68
69java -cp "$toolcp" \
70    com.ibm.icu.dev.tool.docs.CollectAPI \
71        -f Draft \
72        -o ${out_dir}/draftAPIs.html \
73        ${out_dir}/icu4j${api_report_version}.api3.gz
74
75checkFileCreated "${out_dir}/draftAPIs.html"
76
77# ====================================================================================
78
79reportTitle draftAPIsTSV :: Run API collector tool and generate draft API report in TSV
80
81java -cp "$toolcp" \
82    com.ibm.icu.dev.tool.docs.CollectAPI \
83        -f Draft \
84        -o ${out_dir}/draftAPIs.tsv \
85        -t ${out_dir}/icu4j${api_report_version}.api3.gz
86
87checkFileCreated "${out_dir}/draftAPIs.tsv"
88