-
Notifications
You must be signed in to change notification settings - Fork 175
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
Inquiry about Method Caller Extraction in Java Library project Using Tai-e #113
Comments
Any examples? I'm not sure if I understand your question clearly enough. |
I sincerely apologize for the inconvenience. After carefully tracking the actual types of object instances created during runtime, I have found that the caller information extracted by Tai-e is correct. Attached is the relevant code content, and the Readme file contains information about the code structure and related issues. I would greatly appreciate your assistance in resolving these issues. Thank you very much for your time. |
Thank you for the detailed and reproducible material. It is one of the most thorough submissions I have seen in all Tai-e issues. I truly appreciate your effort. However, after reviewing the materials, it feels like you've moved an elephant (your entire job) into our discussion room. As a Tai-e developer, this overwhelms me, despite my enthusiasm for solving your problems and those of other Tai-e users. I'm concerned that I don't have enough time to fully understand the entire context of your job. To assist you more effectively, could you please break down your issue into smaller, more specific questions? This will allow us to focus on the particular problems you're encountering with Tai-e, rather than the entirety of your job. Let me make an attempt to understand the problem. Are you asking how to efficiently find all the possible caller methods of a method public class C {
public void m() {...}
} while considering that you do not need to handle all entry methods by hand? If so, Call Graph Construction via CHA (Class Hierarchy Analysis) might be what you need (while letting all methods in the program be entry methods), even though it may be low precision. If this is not the case, please correct my understanding. |
Thank you for your patience. Indeed, my goal is to accurately find all the exact caller methods for a specific method. I apologize for not clearly describing the specific problem I encountered while using Tai-e, which caused you confusion. I just started learning static analysis and using Tai-e. In my understanding, using the Pointer Analysis (PTA) algorithm can construct a call graph for a specific entry point with relatively high precision, but it handles call information not covered by the specific entry path poorly; while using Class Hierarchy Analysis (CHA) can build a more comprehensive call graph, but might be less precise. Could you please confirm if my understanding is accurate? |
Yes, you are right. As we know, static analysis involves balancing soundness, precision, scalability, and automation. If you choose PTA for call graph construction, it offers better soundness and precision but has lower scalability and automation in your scenario. Tai-e's PTA is a top-down analysis that depends on specific entry points. If you care a lot about precision, CHA might not be suitable; you need to consider how to find all entry points. |
Understood, I appreciate your response immensely. Thank you!!! |
Overall Description
Hello,
I am currently analyzing a Java library application project named P_library using Tai-e. My goal is to extract the function signatures of all callers of the getData method defined in the example.java file across the P_library project. Since the library lacks a main function and the getData method contains bugs, I modified the onStart() function in EntryPointHandler.java within Tai-e. I set it to trigger the bug-invoking test method in the P_library project's JUnit tests, knowing this would reach the getData method, in an attempt to capture all callers of this method throughout the project. However, I've encountered some issues:
Could you please advise if it is possible to accurately extract the function signatures of all callers for the getData method defined in example.java within the P_library project using Tai-e?
I look forward to your response and am willing to provide any additional information needed. Thank you very much.
Expected Behavior
Extract the function signatures of all callers of the getData method defined in the example.java file across the P_library project.
Current Behavior
Tai-e Arguments
Click here to see Tai-e Options
Click here to see Tai-e Analysis Plan
Tai-e Log
Click here to see Tai-e Log
Additional Information
No response
The text was updated successfully, but these errors were encountered: