Depends-Kotlin: A Cross-Language Kotlin Dependency Extractor
- URL: http://arxiv.org/abs/2401.16865v3
- Date: Wed, 21 Aug 2024 15:39:24 GMT
- Title: Depends-Kotlin: A Cross-Language Kotlin Dependency Extractor
- Abstract summary: Depends-Kotlin supports extracting entities' dependencies in Kotlin code.
It can also extract dependency relations between Kotlin and Java.
Depends-Kotlin demonstrates high accuracy and performance in resolving Kotlin-Kotlin and Kotlin-Java dependencies relations.
- Score: 3.0915964434574175
- License: http://creativecommons.org/licenses/by/4.0/
- Abstract: Since Google introduced Kotlin as an official programming language for developing Android apps in 2017, Kotlin has gained widespread adoption in Android development. However, compared to Java, there is limited support for Kotlin code dependency analysis, which is the foundation to software analysis. To bridge this gap, we develop Depends-Kotlin to extract entities and their dependencies in Kotlin source code. Not only does Depends-Kotlin support extracting entities' dependencies in Kotlin code, but it can also extract dependency relations between Kotlin and Java. Using three open-source Kotlin-Java mixing projects as our subjects, Depends-Kotlin demonstrates high accuracy and performance in resolving Kotlin-Kotlin and Kotlin-Java dependencies relations. The source code of Depends-Kotlin and the dataset used have been made available at https: //github.com/XYZboom/depends-kotlin. We also provide a screen-cast presenting Depends-Kotlin at https://youtu.be/ZPq8SRhgXzM.
Related papers
- DepWareTrans: Dependency-Aware Incremental Repository Migration across Co-executable Languages [39.40948181220988]
We show that the primary cause of failure at the repository level is dependency inconsistency.<n>We propose a dependency-aware incremental migration framework that elevates dependency-consistent batches.
arXiv Detail & Related papers (2026-08-14T09:35:48Z) - CrossLangFuzzer: Differential Testing of Cross-Language JVM Compilers [6.138794721766494]
CrossLangFuzzer is a differential testing framework for cross-language compilation.<n>It synthesizes cross-language test programs using the Kotlin compiler's unified intermediate representation.<n>CrossLangFuzzer uncovered 32 confirmed bugs, including 15 in Kotlin, 4 in Groovy, 7 in Scala 3, 2 in Scala 2, and 4 in Java.
arXiv Detail & Related papers (2026-06-26T14:33:52Z) - Classport: Designing Runtime Dependency Introspection for Java [8.337857900646346]
introspection, i.e., the ability to observe which dependencies are currently used during program execution is fundamental for Software Supply Chain security.<n>We solve this problem with Classport, a system that embeds dependency information into Java class files, enabling the retrieval of dependency information at runtime.<n>We evaluate Classport on six real-world projects, demonstrating the feasibility in identifying dependencies at runtime.
arXiv Detail & Related papers (2025-10-23T08:39:30Z) - LitmusKt: Concurrency Stress Testing for Kotlin [0.8312192184427764]
We present LitmusKt - the first tool for testing concurrent programs in Kotlin.
Our tool allows litmus tests in a single custom DSL, and these tests are then run in Kotlin/Native and Kotlin/JVM.
Using LitmusKt, we discovered novel bugs in the Kotlin compiler, which we then fixed and they are no longer present.
arXiv Detail & Related papers (2025-01-13T16:40:34Z) - How Do Developers Use Type Inference: An Exploratory Study in Kotlin [3.382017614888546]
Kotlin is the default language for Android development, one of the largest software marketplaces.
We conduct a large-scale empirical study using Boa, a tool for mining software repositories.
Our findings reveal that type inference is frequently employed for local variables and variables with method calls declared outside the file.
arXiv Detail & Related papers (2024-10-30T18:07:21Z) - Kotlin's Type System is (Also) Unsound [0.19116784879310028]
A type checker for a sound type system is expected to issue a warning on every type error.
In 2016, Amin and Tate presented the first unsoundness proof for two major industry languages: Java and Scala.
We present an unsoundness proof for Kotlin, which relies on a previously unknown unsound combination of language features.
arXiv Detail & Related papers (2024-08-20T12:54:12Z) - Kotlin ML Pack: Technical Report [5.691600667043724]
We present three novel datasets of Kotlin code: KStack, KStack-clean, and KExercises.
We also present a version of the HumanEval benchmark rewritten by human experts into Kotlin.
arXiv Detail & Related papers (2024-05-29T16:33:50Z) - Cross-Language Dependencies: An Empirical Study of Kotlin-Java [1.5680371708311132]
Since Google introduced Kotlin as an official programming language for developing Android apps in 2017, Kotlin has gained widespread adoption in Android development.
There is limited research on how Java and Kotlin interact with each other in real-world projects.
We conducted an empirical study of 23 Kotlin-Java real-world projects with 3,227 Java and 8,630 Kotlin source files.
arXiv Detail & Related papers (2024-05-07T18:26:24Z) - LLoCO: Learning Long Contexts Offline [63.3458260335454]
We propose LLoCO, a novel approach to processing long contexts.
LLoCO learns contexts offline through context compression and in-domain parameter-efficient finetuning with LoRA.
Our approach extends the effective context window of a 4k token LLaMA2-7B model to handle up to 128k tokens.
arXiv Detail & Related papers (2024-04-11T17:57:22Z) - LongBench: A Bilingual, Multitask Benchmark for Long Context Understanding [58.20031627237889]
LongBench is the first bilingual, multi-task benchmark for long context understanding.
It comprises 21 datasets across 6 task categories in both English and Chinese, with an average length of 6,711 words (English) and 13,386 characters (Chinese)
arXiv Detail & Related papers (2023-08-28T11:53:40Z) - Hexatagging: Projective Dependency Parsing as Tagging [63.5392760743851]
We introduce a novel dependency, the hexatagger, that constructs dependency trees by tagging the words in a sentence with elements from a finite set of possible tags.
Our approach is fully parallelizable at training time, i.e., the structure-building actions needed to build a dependency parse can be predicted in parallel to each other.
We achieve state-of-the-art performance of 96.4 LAS and 97.4 UAS on the Penn Treebank test set.
arXiv Detail & Related papers (2023-06-08T18:02:07Z) - Automatic Specialization of Third-Party Java Dependencies [3.7973152331947815]
Large-scale code reuse significantly reduces both development costs and time.
Massive share of third-party code in software projects poses new challenges, especially in terms of maintenance and security.
We propose a novel technique to specialize dependencies of Java projects, based on their actual usage.
arXiv Detail & Related papers (2023-02-16T15:37:49Z) - Binding Language Models in Symbolic Languages [146.3027328556881]
Binder is a training-free neural-symbolic framework that maps the task input to a program.
In the parsing stage, Codex is able to identify the part of the task input that cannot be answerable by the original programming language.
In the execution stage, Codex can perform versatile functionalities given proper prompts in the API calls.
arXiv Detail & Related papers (2022-10-06T12:55:17Z) - ReACC: A Retrieval-Augmented Code Completion Framework [53.49707123661763]
We propose a retrieval-augmented code completion framework, leveraging both lexical copying and referring to code with similar semantics by retrieval.
We evaluate our approach in the code completion task in Python and Java programming languages, achieving a state-of-the-art performance on CodeXGLUE benchmark.
arXiv Detail & Related papers (2022-03-15T08:25:08Z) - Mining Knowledge for Natural Language Inference from Wikipedia
Categories [53.26072815839198]
We introduce WikiNLI: a resource for improving model performance on NLI and LE tasks.
It contains 428,899 pairs of phrases constructed from naturally annotated category hierarchies in Wikipedia.
We show that we can improve strong baselines such as BERT and RoBERTa by pretraining them on WikiNLI and transferring the models on downstream tasks.
arXiv Detail & Related papers (2020-10-03T00:45:01Z) - NatCat: Weakly Supervised Text Classification with Naturally Annotated
Resources [53.01755762559001]
We describe NatCat, a large-scale resource for text classification constructed from three data sources: Wikipedia, Stack Exchange, and Reddit.
NatCat consists of document-category pairs derived from manual curation that occurs naturally within online communities.
arXiv Detail & Related papers (2020-09-29T22:49:15Z)
This list is automatically generated from the titles and abstracts of the papers in this site.
This site does not guarantee the quality of this site (including all information) and is not responsible for any consequences.