daniel-pfeffer / annotations-source-code-modification Goto Github PK
View Code? Open in Web Editor NEWSource code of the paper "On the Applicability of Annotation-based Source Code Modification in Kotlin" for MPLR'23
Source code of the paper "On the Applicability of Annotation-based Source Code Modification in Kotlin" for MPLR'23
Create the Kotlin Plugin Infrastructure including:
CompilerPluginRegistrar
: Controls the registration of the Compiler PluginCLIProcessor
: Maps command line options to more useful configuration optionsClassGenerationInterceptor
: Intercepts the class building to allow for custom ClassBuilder
ClassBuilder
: Custom ClassBuilder that controls how a class is createdCreate the required Code for Class Annotations.
For simplicity we won't analyse what fields are verified.
The verification procedure will be called after
Create the general Infrastructure for the Java Agent, this includes:
Agent
moduleAnnotation
modulebuildSrc
modulesample
moduleCreated the infrastructure of the Gradle Plugin and finalise the minor development effort.
This includes:
KotlinCompilerPluginSupportPlugin
Create the required ByteCode for Parameter Annotations.
The verification procedure will be called after
Create the required Code for Parameter Annotations.
The verification procedure will be called after
Create the required ByteCode for Class Annotations.
For simplicity we won't analyse what fields are verified.
The verification procedure will be called after
Add a dynamically created pool of classes that can be used for verification.
E.g.: A Program uses NotNegativeVerifier
and NotPositiveVerifier
, the ClassPool then creates fields for both verifier like
object VerifierPool{
val notNegativeVerifier = NotNegativeVerifier()
val notPositiveVerifier = NotNegativeVerifier()
}
As all verifier must be statless we can use a pool to reuse verifier instances, to not waste performance
Create the required Code for Local Variable Annotations.
The verification procedure will be called after
Create the required ByteCode for Local Variable Annotations.
The verification procedure will be called after
Add a dynamically created pool of classes that can be used for verification.
E.g.: A Program uses NotNegativeVerifier and NotPositiveVerifier, the ClassPool then creates fields for both verifier like
object VerifierPool{
val notNegativeVerifier = NotNegativeVerifier()
val notPositiveVerifier = NotNegativeVerifier()
}
As all verifier must be statless we can use a pool to reuse verifier instances, to not waste performance
Create the required Code for Field Annotations.
The verification procedure will be called after
Create the required ByteCode for Field Annotations.
The verification procedure will be called after
Create the Kotlin Plugin ClassBuilder so that:
Create the general Infrastructure for the Compiler Plugin, including
annotation
modulebuildSrc
modulegradle-plugin
modulekotlin-plugin
modulesample
moduleAdditionally, organise the modules so they work correctly without a potential future problem
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.