gpt4 book ai didi

ocaml - 可以用frama-c做头文件分析吗?

转载 作者:行者123 更新时间:2023-12-04 15:01:06 31 4
gpt4 key购买 nike

我将 frama-c 视为在 OCaml 中处理 C 头文件的一种方式(例如,用于生成语言绑定(bind))。它很有吸引力,因为它看起来是一个文档齐全且维护良好的项目。但是,经过大量谷歌搜索和文档搜索后,我找不到任何适合该目的的内容。我只是错过了执行此操作的正确方法,还是超出了 frama-c 的范围?与其他一些插件相比,这似乎是一件相当微不足道的事情。

最佳答案

正如 Pascal 所说,我认为从命令行是不可能的,但是因为无论如何您都必须编写一些代码,所以您可以设置标志 Rmtmps.keepUnused .这是一个可用于查看声明的脚本:

let main () =
Rmtmps.keepUnused := true;
let file = File.from_filename "t.h" in
let () = File.init_from_c_files [ file ] in
let _ast = Ast.get () in
let show_function f =
let name = Kernel_function.get_name f in
if not (Cil.Builtin_functions.mem name) then
Format.printf "Function @[<2>%a:@ @[@[type: %a@]@ @[%s at %a@]@]@]@."
Kernel_function.pretty f
Cil_datatype.Typ.pretty (Kernel_function.get_type f)
(if Kernel_function.is_definition f then "defined" else "declared")
Cil.d_loc (Kernel_function.get_location f)
in Globals.Functions.iter show_function

let () = Db.Main.extend main

要运行它,您必须使用 -load-script像这样的选项:
$ frama-c -load-script script.ml

开发插件将更适合更复杂的处理(请参阅开发人员手册),但脚本使其易于测试。

关于ocaml - 可以用frama-c做头文件分析吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14723291/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com