r227354 - Add clang-format-fuzzer target
Kostya Serebryany
kcc at google.com
Wed Jan 28 11:39:19 PST 2015
Author: kcc
Date: Wed Jan 28 13:39:18 2015
New Revision: 227354
URL: http://llvm.org/viewvc/llvm-project?rev=227354&view=rev
Log:
Add clang-format-fuzzer target
Summary:
This adds clang-format-fuzzer binary,
which depends on the Fuzzer lib,
see http://reviews.llvm.org/D7184
This fuzer has found ~15 bugs so far, and I hope to set up a bot for it.
Test Plan: run on a bot.
Reviewers: samsonov, djasper
Reviewed By: djasper
Subscribers: curdeius, cfe-commits
Differential Revision: http://reviews.llvm.org/D7202
Added:
cfe/trunk/tools/clang-format/fuzzer/
cfe/trunk/tools/clang-format/fuzzer/CMakeLists.txt
cfe/trunk/tools/clang-format/fuzzer/ClangFormatFuzzer.cpp
Modified:
cfe/trunk/tools/clang-format/CMakeLists.txt
Modified: cfe/trunk/tools/clang-format/CMakeLists.txt
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/tools/clang-format/CMakeLists.txt?rev=227354&r1=227353&r2=227354&view=diff
==============================================================================
--- cfe/trunk/tools/clang-format/CMakeLists.txt (original)
+++ cfe/trunk/tools/clang-format/CMakeLists.txt Wed Jan 28 13:39:18 2015
@@ -4,13 +4,19 @@ add_clang_executable(clang-format
ClangFormat.cpp
)
-target_link_libraries(clang-format
+set(CLANG_FORMAT_LIB_DEPS
clangBasic
clangFormat
clangRewrite
clangToolingCore
)
+target_link_libraries(clang-format
+ ${CLANG_FORMAT_LIB_DEPS}
+ )
+
+add_subdirectory(fuzzer)
+
install(TARGETS clang-format RUNTIME DESTINATION bin)
install(PROGRAMS clang-format-bbedit.applescript DESTINATION share/clang)
install(PROGRAMS clang-format-diff.py DESTINATION share/clang)
Added: cfe/trunk/tools/clang-format/fuzzer/CMakeLists.txt
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/tools/clang-format/fuzzer/CMakeLists.txt?rev=227354&view=auto
==============================================================================
--- cfe/trunk/tools/clang-format/fuzzer/CMakeLists.txt (added)
+++ cfe/trunk/tools/clang-format/fuzzer/CMakeLists.txt Wed Jan 28 13:39:18 2015
@@ -0,0 +1,11 @@
+set(LLVM_LINK_COMPONENTS support)
+
+add_clang_executable(clang-format-fuzzer
+ EXCLUDE_FROM_ALL
+ ClangFormatFuzzer.cpp
+ )
+
+target_link_libraries(clang-format-fuzzer
+ ${CLANG_FORMAT_LIB_DEPS}
+ LLVMFuzzer
+ )
Added: cfe/trunk/tools/clang-format/fuzzer/ClangFormatFuzzer.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/tools/clang-format/fuzzer/ClangFormatFuzzer.cpp?rev=227354&view=auto
==============================================================================
--- cfe/trunk/tools/clang-format/fuzzer/ClangFormatFuzzer.cpp (added)
+++ cfe/trunk/tools/clang-format/fuzzer/ClangFormatFuzzer.cpp Wed Jan 28 13:39:18 2015
@@ -0,0 +1,25 @@
+//===-- ClangFormatFuzzer.cpp - Fuzz the Clang format tool ----------------===//
+//
+// The LLVM Compiler Infrastructure
+//
+// This file is distributed under the University of Illinois Open Source
+// License. See LICENSE.TXT for details.
+//
+//===----------------------------------------------------------------------===//
+///
+/// \file
+/// \brief This file implements a function that runs Clang format on a single
+/// input. This function is then linked into the Fuzzer library.
+///
+//===----------------------------------------------------------------------===//
+
+#include "clang/Format/Format.h"
+
+extern "C" void TestOneInput(uint8_t *data, size_t size) {
+ // FIXME: fuzz more things: different styles, different style features.
+ std::string s((const char *)data, size);
+ auto Style = getGoogleStyle(clang::format::FormatStyle::LK_Cpp);
+ Style.ColumnLimit = 60;
+ applyAllReplacements(s, clang::format::reformat(
+ Style, s, {clang::tooling::Range(0, s.size())}));
+}
More information about the cfe-commits
mailing list