Lines Matching refs:and
4 users of this tool are Android Platform and AndroidX libraries, however this
11 which in turn get compiled into android.jar, the Android SDK library) and
18 annotations) to ship alongside the Android SDK and used by Android Lint.
20 * Diffing versions of the API and determining whether a newer version is
23 ## Building and running
25 To download the code and any dependencies required for building, see [DOWNLOADING.md](DOWNLOADING.m…
78 To build Metalava's Maven artifacts including `.pom` and `.module` metadata, run:
86 To build and run Metalava against a pinned version of an AndroidX library you can
118 "implements" for the superclass of an interface, and many other similar
119 tweaks outlined in the `Compatibility` class. (Metalava also allows (and
122 * Add support for writing (and reading) annotations into the signature
125 and default values.)
130 bloated with @NonNull and @Nullable annotations everywhere. So instead, the
132 annotated, and nothing for non-null.
145 and reinsert during import. Specifically, drop "java.lang." from package
161 looks for various common typos and fixes those; here's a sample error
168 not just nullness annotations found in the source code and annotations merged
170 recently changed and if so marking them as @Migrate (which lets the Kotlin
177 the API and which one is implementation; it is simply handed the filtered API
181 as well and metalava will parse and extract API information from them just as
184 * Like doclava1, metalava can diff two APIs and warn about API compatibility
191 * Consistent stubs: In doclava1, the code which iterated over the API and
192 generated the signature files and generated the stubs had diverged, so there
201 the exact same API as is listed in the signature files, and once this was
206 checks on the public API in the codebase and flag issues that are discouraged
232 (.class or .jar files) and it will then measure the annotation coverage of the
234 that are currently used by a corpus of apps and target our annotation efforts
236 framework, and pointing it to the
243 324 methods and fields were missing nullness annotations out of 650 total
293 android.os.Parcel and android.view.View for example where there are
301 level, so it can resolve references and map them back to the original field
302 references and include those directly.
305 annotation files needed by Studio and lint in Gradle, which captures the
306 typedefs (@IntDef and @StringDef classes) in the source code. Prior to this
324 and stubs.
328 Metalava is implemented on top of IntelliJ parsing APIs (PSI and UAST). However,
330 level concepts like packages, classes and inner classes, methods, fields, and
346 API and for example mark a subset of its methods as included. By having a
347 separate hierarchy we can easily perform this work once and pass around our
348 filtered model instead of passing around PsiClass and PsiMethod instances
349 and having to keep the filtered data separately and remembering to always
356 to a source tree or a .jar file, and it constructs Items built on top of PSI:
358 signature files: TextPackageItem, TextClassItem, and so on.
366 file and the current set of source folders), and then you "diff" the two.
382 `visitItem`, or to specifically visit methods, fields and so on overriding
388 This is how for example the SignatureWriter and the StubWriter are both
390 the API items in the codebase, and then in each relevant method they emit the
453 overrides the `compare(old: Item, new: Item)` method, and checks whether the old
454 item has no nullness annotations and the new one does, and if so, also marks the
471 files, which can then be processed by Dokka and Javadoc to generate the same
475 docs (such as documenting permissions, ranges and typedefs from annotations) was
476 to insert auxiliary tags (`@range`, `@permission`, etc) and then this would get
482 typedef macro), but should also help Dokka -- and arguably the Kotlin code which
483 generates the documentation is easier to reason about and to update when it's
487 " and then the conjunction at the end should be "and").