-
-
Notifications
You must be signed in to change notification settings - Fork 353
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
feature: Add support for dataflow analysis in new module spoon-dataflow #2970
Conversation
Excellent! Welcome to spoon-dataflow! Initial questions:
|
Z3 solver itself is written in C++ and the jar file basically contains only JNI wrappers. This jar file is a part of a zip release from here: https://github.com/Z3Prover/z3/releases
|
I'll check out CI script. |
I would go for solution 2 for now. Just created https://github.com/SpoonLabs/spoon-dependencies and added you as contributor. |
Regarding the CI script, we have to have z3 on the system to run tests, so I need to add something like this:
Is it ok for you? (I can simply run |
yes, that's a good way of doing it.
|
spoon.MavenLauncherTest stuck, so have to reopen this PR to trigger Travis to rerun. |
LGTM. I propose to remove:
WDYT |
you can also push an empty commit to trigger a new build.
|
I believe that having gradle wrapper committed in VCS is a common practice. The whole idea of a wrapper is to be able to build project even without having gradle (of the corresponding version) installed on the machine. |
In Spoon, we have a tradition of daring to do things beyond the common practice :-)
I see. Is it required for Travis? |
I think it is not required for Travis (gradle should be preinstalled since By the way, even the official gradle docs say that wrapper should be in VSC: Gradle docs also say that it is recommended to always execute a build with the Wrapper to ensure reliable, controlled and standardized execution of the build. If we still don't want to have it in VCS, I can add an additional step to generate wrapper: WDYT? |
|gradle wrapper --gradle-version X.X|
then we can run build as usual:
|./gradlew build|
|sounds perfect!|
|
Tried to remove the wrapper, but unfortunately, gradle in Travis is too old (4.0) and it seems that it does not know about Java 9 versioning yet: |
One option is to download the wrapper from somewhere else (as any other build dependencies that are also downloaded). I would go this way but I understand Egor's preference for the "standard" solution. If anybody is strongly against adding a binary JAR file in the repo, raise your voice now. |
Thanks a lot, this is an important milestone for Spoon. There is a lack of a good and active symbolic engine for Java, and spoon-dataflow may be the foundation for this. That's great. |
This PR is to add experimental spoon-dataflow module (see #2873).
Lambdas and anonymous classes are not fully supported at the moment (see tests marked with FIXME).
P.S. The main logic is inside DataFlowScanner.java