Skip to content

Commit

Permalink
Suppress more warnings using ToolApplicationSupport::suppressWarnings
Browse files Browse the repository at this point in the history
Signed-off-by: Daniel Beer <dbeer1@bloomberg.net>
  • Loading branch information
dbeer1 authored and ruoso committed Aug 19, 2019
1 parent bcfac24 commit e406556
Show file tree
Hide file tree
Showing 4 changed files with 36 additions and 18 deletions.
2 changes: 1 addition & 1 deletion src/tool_application_support.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -102,7 +102,7 @@ void ToolApplicationSupport::suppressWarnings(clang::tooling::ClangTool &tool) {
auto argAdjuster = [](const clang::tooling::CommandLineArguments &cliArgsIn,
llvm::StringRef unused) {
clang::tooling::CommandLineArguments cliArgsOut = cliArgsIn;
cliArgsOut.push_back("-w");
cliArgsOut.push_back("-Wno-everything");
return cliArgsOut;
};
tool.appendArgumentsAdjuster(argAdjuster);
Expand Down
46 changes: 29 additions & 17 deletions t/029-tool-application-support.t.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,11 @@
#include <string>
#include <queue>

llvm::cl::OptionCategory& optionCategory() {
static llvm::cl::OptionCategory s_optionCategory("test");
return s_optionCategory;
}

class LLVMFatalError : public std::runtime_error {
public:
LLVMFatalError(const std::string& reason)
Expand Down Expand Up @@ -47,16 +52,15 @@ struct ToolApplicationSupportTest : public ::testing::Test {
std::string verifyInstallation(const std::vector<std::string>& arguments)
{
try {
llvm::cl::OptionCategory category("test");

std::vector<const char*> argumentPtrs;
for (const auto& item : arguments) {
argumentPtrs.push_back(item.c_str());
}

int argc = argumentPtrs.size();
const char** argv = argumentPtrs.data();
clang::tooling::CommonOptionsParser parser(argc, argv, category);
clang::tooling::CommonOptionsParser parser(argc, argv,
optionCategory());

clangmetatool::ToolApplicationSupport::verifyInstallation(
parser.getCompilations(),
Expand Down Expand Up @@ -104,7 +108,7 @@ TEST_F(ToolApplicationSupportTest, toolchain)
TEST_F(ToolApplicationSupportTest, compilation_database)
{
std::string buildDir =
CMAKE_SOURCE_DIR "/t/data/029-tool-application-support";
CMAKE_SOURCE_DIR "/t/data/029-tool-application-support/build";

EXPECT_EQ("", verifyInstallation({"tool", "/src/test1.cpp",
"-p", buildDir}));
Expand Down Expand Up @@ -140,23 +144,26 @@ class MyTool {

TEST(suppress_warnings, test)
{
llvm::cl::OptionCategory MyToolCategory("my-tool options");
std::string source =
CMAKE_SOURCE_DIR "/t/data/029-tool-application-support/warnings.cpp";

int argc = 4;
const char* argv[] = {
"foo",
CMAKE_SOURCE_DIR "/t/data/029-tool-application-support/warnings.cpp",
source.c_str(),
"--",
"-xc++"
};
int argc = sizeof argv / sizeof *argv;

clang::tooling::CommonOptionsParser optionsParser
( argc, argv, optionCategory() );

// We can't rely on 'optionsParser.getSourcePathList' because it is not
// reset between invocations, so has all of the bogus paths from the other
// tests. Instead we pass only the source relevant to this test.

clang::tooling::CommonOptionsParser
optionsParser
( argc, argv,
MyToolCategory );
clang::tooling::RefactoringTool tool
( optionsParser.getCompilations(),
optionsParser.getSourcePathList());
( optionsParser.getCompilations(), { source });

clangmetatool::ToolApplicationSupport::suppressWarnings(tool);

Expand All @@ -166,10 +173,15 @@ TEST(suppress_warnings, test)
clangmetatool::MetaToolFactory< clangmetatool::MetaTool<MyTool> >
raf(tool.getReplacements());

int r = tool.runAndSave(&raf);
int r = tool.run(&raf);

// Ensure we have the one warning output by the tool, but not the macro
// warning from clang.

// Ensure we have the one warning output by the tool,
// but not the macro warning from clang
EXPECT_EQ(1, tdb.getNumWarnings());
ASSERT_EQ(1, tdb.getNumWarnings());
EXPECT_EQ("oh noz, a thing happened!", tdb.warn_begin()->second);

// Ensure we have no errors

EXPECT_EQ(0, tdb.getNumErrors());
}
6 changes: 6 additions & 0 deletions t/data/029-tool-application-support/warnings.cpp
Original file line number Diff line number Diff line change
@@ -1 +1,7 @@
#include "warnings.h"

void foo()
{
int value = 1;
short narrowing[1] = {value};
}

0 comments on commit e406556

Please sign in to comment.