-
Notifications
You must be signed in to change notification settings - Fork 29
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
Next goals of lockbud #58
Comments
Interesting project! I was wondering have you tried to use the Rust analyzer for static analysis. Their libraries are all on crates-io, e.g., https://docs.rs/ra_ap_hir/latest/ra_ap_hir/, so no nightly rustc is required. The only problem I see is that the start up time can be long, because their state cannot be serialized unless we build the analyzer as a server similar to LSP. |
A precise points-to analysis lib is the key to the success of a static checker like lockbud. The current points-to analysis implementation of lockbud is mostly intraproc and mainly uses type and fn sig info for interproc handling. This imprecise and unsound design is limited by the Rust compiler's immature support for the rust analysis at the time of launching lockbud project. With the development of StableMIR and other efforts to improve the ability of MIR analysis, many brilliant tools emerged. kani and RAP are two great examples. They both implement their own points-to analysis. kani: interprocedural, field-insensitive, MIR and StableMIR, intrinsics covered, sound, easy to understand. https://github.com/Artisan-Lab/RAP/blob/main/rap/src/analysis/core/alias/mop.rs RAP: interprocedural, field-sensitive, MIR, intrinsics not covered, a little convoluted. I am learning from kani, StableMIR and RAP. I plan to start re-designing the current points-to analysis of lockbud before Sep. 15. |
ra_ap_hir is one of the rust-analyzer's crates. To my knowledge, rust-analyzer only works on HIR and only rust compiler can generate MIR. Unfortunately, lockbud only works on MIR for now. I know Stable MIR is on the way. if it becomes mature, lockbud can work on stable rustc. |
I found a context-sensitive points-to analysis framework for Rust called RUPTA. Trying to replace the current pts of lockbud with RUPTA. |
https://arxiv.org/pdf/2401.01114 |
The text was updated successfully, but these errors were encountered: