Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(8)

Unified Diff: tools/clang/value_cleanup/ValueCleanup.cpp

Issue 2032983002: base::Value cleanup: add simple Clang tool for structured cleanups (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Fix comments. Created 4 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: tools/clang/value_cleanup/ValueCleanup.cpp
diff --git a/tools/clang/value_cleanup/ValueCleanup.cpp b/tools/clang/value_cleanup/ValueCleanup.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..23e91a2b4a52945526dcf1fe01b20c9c154b0d0b
--- /dev/null
+++ b/tools/clang/value_cleanup/ValueCleanup.cpp
@@ -0,0 +1,66 @@
+// Copyright 2016 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+//
+// Performs simple cleanups of base::Value API usage.
+
+#include <assert.h>
+#include <memory>
+#include <string>
+
+#include "clang/ASTMatchers/ASTMatchFinder.h"
+#include "clang/Basic/CharInfo.h"
+#include "clang/Basic/SourceManager.h"
+#include "clang/Frontend/FrontendActions.h"
+#include "clang/Lex/Lexer.h"
+#include "clang/Tooling/CommonOptionsParser.h"
+#include "clang/Tooling/Refactoring.h"
+#include "clang/Tooling/Tooling.h"
+#include "llvm/Support/CommandLine.h"
+#include "llvm/Support/TargetSelect.h"
+
+#include "ListValueRewriter.h"
+
+using namespace clang::ast_matchers;
+using clang::tooling::CommonOptionsParser;
+using clang::tooling::Replacement;
+using clang::tooling::Replacements;
+using llvm::StringRef;
+
+static llvm::cl::extrahelp common_help(CommonOptionsParser::HelpMessage);
+
+int main(int argc, const char* argv[]) {
+ // TODO(dcheng): Clang tooling should do this itself.
+ // http://llvm.org/bugs/show_bug.cgi?id=21627
+ llvm::InitializeNativeTarget();
+ llvm::InitializeNativeTargetAsmParser();
+ llvm::cl::OptionCategory category(
+ "value_cleanup: Cleanup deprecated base::Value APIs.");
+ CommonOptionsParser options(argc, argv, category);
+ clang::tooling::ClangTool tool(options.getCompilations(),
+ options.getSourcePathList());
+
+ MatchFinder match_finder;
+ Replacements replacements;
+
+ ListValueRewriter list_value_rewriter(&replacements);
+ list_value_rewriter.RegisterMatchers(&match_finder);
+
+ std::unique_ptr<clang::tooling::FrontendActionFactory> factory =
+ clang::tooling::newFrontendActionFactory(&match_finder);
+ int result = tool.run(factory.get());
+ if (result != 0)
+ return result;
+
+ // Serialization format is documented in tools/clang/scripts/run_tool.py
+ llvm::outs() << "==== BEGIN EDITS ====\n";
+ for (const auto& r : replacements) {
+ std::string replacement_text = r.getReplacementText().str();
+ std::replace(replacement_text.begin(), replacement_text.end(), '\n', '\0');
+ llvm::outs() << "r:::" << r.getFilePath() << ":::" << r.getOffset()
+ << ":::" << r.getLength() << ":::" << replacement_text << "\n";
+ }
+ llvm::outs() << "==== END EDITS ====\n";
+
+ return 0;
+}
« no previous file with comments | « tools/clang/value_cleanup/ListValueRewriter.cpp ('k') | tools/clang/value_cleanup/tests/list-value-append-expected.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698