Open nkeynes-oracle opened 7 years ago
It looks like there's a few separate issues involved here - a) Doop doesn't appear to write out fact files that would otherwise be empty b) Some fact files are expected to have slightly different names (e.g. MethodSignature-Descriptor.facts vs MethodSignatureDescriptor.facts) c) Some expected fact files are not generated by Doop at all (e.g. BasicBlockEntry) d) It looks like the generated facts have changed between the binary Doop release and current tip-of-tree. For the moment focusing on the released version.
With respect to (c) we appear to be missing the following relations: BasicBlockEntry BasicBlockIn ExternalHeapAllocation FieldSignatureRef HeapAllocationRefDebugInfo LoadInstanceFieldIndex NestedClass StoreInstanceFieldIndex UnknownReturnedHeapAllocation
A lot of this work is already done here:
https://github.com/souffle-lang/java-pts
Changing the spec from open-world to closed-world needs to be done.
It would require some effort to get the new version of Doop to work with Souffle. The tool-chain used by Doop has become more sophisticated and the underlying schema for some of the relations have changed.
I can run the version in the /logic/ folder of the souffle-lang/java-pts repo, but still get various missing files (e.g. ClassModifier.facts) from that version too. Is there an older version where this was in a working state? (Although maybe it requires an older souffle.)
FYI: I have to run java7 and use the extractor in build/libs/ instead of build/lib/ but otherwise I followed the readme.
The sample files reference relations such as BasicBlockRef that are not generated by the Doop extractor. These references should be removed if possible so that the sample code can work with Doop-extracted fact tables.