C++;解析器或静态代码分析 我正在寻找一个免费的软件、工具、库或任何分析C++代码的工具。

C++;解析器或静态代码分析 我正在寻找一个免费的软件、工具、库或任何分析C++代码的工具。,c++,parsing,static-analysis,C++,Parsing,Static Analysis,据我所知,像“Cppcheck”这样的“静态代码分析”工具对我没有帮助,因为我无法定义自己的规则或输出。我想,一个给我一个C++文件的AST(抽象语法树)的库是最好的。 我的目标是编写一个命令行工具,生成包含以下内容的输出: Test.cpp: The file contains 42 global Integers. The Class Test has the following attributes: String name, Int size. The Class Test co

据我所知,像“Cppcheck”这样的“静态代码分析”工具对我没有帮助,因为我无法定义自己的规则或输出。我想,一个给我一个C++文件的AST(抽象语法树)的库是最好的。 我的目标是编写一个命令行工具,生成包含以下内容的输出:

Test.cpp:
The file contains 42 global Integers.
The Class Test has the following attributes:
  String name,
  Int size.
The Class Test contains the following global functions:
  void Test(),
  int getTestSize(),
  String renameTest(String newName).

您可以使用clang和现有分析器,或者在提供的API上实现您自己的分析器。

您可以使用clang和现有分析器,或者在提供的API上实现您自己的分析器。

正如David建议的那样,clang是一个不错的选择,您只需实现您自己的ASTConsumer,您可以以现有的clang ASTConsumer(如ASTPrinter或ASTDumpXML)为例,因为David建议clang是一个不错的选择,您只需实现自己的ASTConsumer,你可以拿已经存在的像ASTPrinter或ASTDumpXML这样的响亮的ASTConsumers作为例子,我不想让它听起来陈腐,但你只需阅读标题就可以得到所有这些。你在这里找什么特别的东西吗?你希望用这个来做什么?也许你应该实现你自己的分析器。与一个完整的C++分析器有什么区别?在我看来,这对我来说太复杂了。我的目标是编写自己的静态代码分析器。如果没有一个完整的C++分析器,带有预处理器和符号表构造,那么您可能无法找到类型、类、变量,或者确定方法/成员的类型。(typedef T是在由混乱路径访问的某个命名空间中定义的……您将无法找到它)。你可能不想要完整前端的“复杂性”,但在这种情况下,你最好放弃答案的准确性。如果将后者应用于复杂的软件,那么后者通常是不令人满意的,并且您不需要用于简单软件的工具。我不想让它听起来老套,但你只需阅读标题就可以得到所有这些。你在这里找什么特别的东西吗?你希望用这个来做什么?也许你应该实现你自己的分析器。与一个完整的C++分析器有什么区别?在我看来,这对我来说太复杂了。我的目标是编写自己的静态代码分析器。如果没有一个完整的C++分析器,带有预处理器和符号表构造,那么您可能无法找到类型、类、变量,或者确定方法/成员的类型。(typedef T是在由混乱路径访问的某个命名空间中定义的……您将无法找到它)。你可能不想要完整前端的“复杂性”,但在这种情况下,你最好放弃答案的准确性。如果将后者应用于复杂的软件,那么后者通常是不令人满意的,并且您不需要用于简单软件的工具。YMMV。