बजना एएसटी के साथ टिप्पणी पार्स

वोट
0

मैं बजना एएसटी के साथ अनुकूलित टैग पार्स करने के लिए करना चाहते हैं। यहाँ मेरी संकलन इकाई इनपुट के एक सरल उदाहरण है।

#include <stdio.h>
int main() {
  // \my-tags tag_A, tag_B
  printf(helloworld);
  return 0;
}

मैं कैसे के बाद उन टैग प्राप्त कर सकते हैं \my-tags?

पढ़ने के बाद बजना उपयोगकर्ता पुस्तिका , मैं उस एहसास -Wdocumentation, -fparse-all-commentsया यहाँ तक कि -fcomment-block-commandsमेरी आवश्यकता को पूरा कर सकते हैं। हालांकि, जब मैं अपने में इन चिह्नों में से एक को जोड़ने compile_commands.json, ASTContext.Comments.empty()अभी भी आउटपुट True। मैं अपने संलग्न compile_commands.jsonसंदर्भ के लिए नीचे और मेरे बजना एएसटी दृश्यपटल कोड।

// compile_commands.json
[
  {
    directory: /home/my/project/target/directory,
    arguments: [/usr/local/bin/clang, -c, -std=c++14, -Qunused-arguments, -m64, -fparse-all-comments, -I/usr/include, -I/usr/local/lib/clang/10.0.0/include, -o, build/.objs/input/linux/x86_64/release/target/target.cpp.o, target/target.cpp],
    file: target/target.cpp
  }
]
// CommentParser.cpp
class MyPrinter : public MatchFinder::MatchCallback {
  public:
    virtual void run(const MatchFinder::MatchResult &Result) {
      ASTContext *Context = Result.Context;
      SourceManager& sm = Context->getSourceManager();
      if (!Context->Comments.empty())
        llvm::outs() << There is no parsed comment\n;
    }
};

int main(int argc, const char **argv) {
  // CommonOptionsParser OptionsParser(argc, argv, MyToolCategory);
  std::string err;
  std::unique_ptr<CompilationDatabase> cd = CompilationDatabase::autoDetectFromSource(/home/my/project/target/directory/compile_commands.json, err);

  ClangTool Tool(*cd, cd->getAllFiles());

  MyPrinter Printer;
  MatchFinder Finder;

  StatementMatcher functionMatcher =
    callExpr(callee(functionDecl(hasName(pthread_mutex_lock)))).bind(functions);

  Finder.addMatcher(functionMatcher, &Printer);

  return Tool.run(newFrontendActionFactory(&Finder).get());
}

19/03/2020 को 19:50
का स्रोत उपयोगकर्ता
अन्य भाषाओं में...                            

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more