forked from OSchip/llvm-project
[clang-tidy ObjC] [1/3] New module `objc` for Objective-C checks
Summary: This is part 1 of 3 of a series of changes to improve Objective-C linting in clang-tidy. This introduces a new clang-tidy module, `objc`, specifically for Objective-C / Objective-C++ checks. The module is currently empty; D39142 adds the first check. Test Plan: `ninja check-clang-tools` Patch by Ben Hamilton! Reviewers: hokein, alexfh Reviewed By: hokein Subscribers: Wizard, mgorny Differential Revision: https://reviews.llvm.org/D39188 llvm-svn: 316643
This commit is contained in:
parent
37d57dac63
commit
abcd64ccbf
|
@ -37,6 +37,7 @@ add_subdirectory(llvm)
|
||||||
add_subdirectory(misc)
|
add_subdirectory(misc)
|
||||||
add_subdirectory(modernize)
|
add_subdirectory(modernize)
|
||||||
add_subdirectory(mpi)
|
add_subdirectory(mpi)
|
||||||
|
add_subdirectory(objc)
|
||||||
add_subdirectory(performance)
|
add_subdirectory(performance)
|
||||||
add_subdirectory(plugin)
|
add_subdirectory(plugin)
|
||||||
add_subdirectory(readability)
|
add_subdirectory(readability)
|
||||||
|
|
|
@ -0,0 +1,13 @@
|
||||||
|
set(LLVM_LINK_COMPONENTS support)
|
||||||
|
|
||||||
|
add_clang_library(clangTidyObjCModule
|
||||||
|
ObjCTidyModule.cpp
|
||||||
|
|
||||||
|
LINK_LIBS
|
||||||
|
clangAST
|
||||||
|
clangASTMatchers
|
||||||
|
clangBasic
|
||||||
|
clangLex
|
||||||
|
clangTidy
|
||||||
|
clangTidyUtils
|
||||||
|
)
|
|
@ -0,0 +1,39 @@
|
||||||
|
//===--- ObjCTidyModule.cpp - clang-tidy --------------------------------===//
|
||||||
|
//
|
||||||
|
// The LLVM Compiler Infrastructure
|
||||||
|
//
|
||||||
|
// This file is distributed under the University of Illinois Open Source
|
||||||
|
// License. See LICENSE.TXT for details.
|
||||||
|
//
|
||||||
|
//===----------------------------------------------------------------------===//
|
||||||
|
|
||||||
|
#include "../ClangTidy.h"
|
||||||
|
#include "../ClangTidyModule.h"
|
||||||
|
#include "../ClangTidyModuleRegistry.h"
|
||||||
|
|
||||||
|
using namespace clang::ast_matchers;
|
||||||
|
|
||||||
|
namespace clang {
|
||||||
|
namespace tidy {
|
||||||
|
namespace objc {
|
||||||
|
|
||||||
|
class ObjCModule : public ClangTidyModule {
|
||||||
|
public:
|
||||||
|
void addCheckFactories(ClangTidyCheckFactories &CheckFactories) override {
|
||||||
|
// TODO(D39142): Add checks here.
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
// Register the ObjCTidyModule using this statically initialized variable.
|
||||||
|
static ClangTidyModuleRegistry::Add<ObjCModule> X(
|
||||||
|
"objc-module",
|
||||||
|
"Adds Objective-C lint checks.");
|
||||||
|
|
||||||
|
} // namespace objc
|
||||||
|
|
||||||
|
// This anchor is used to force the linker to link in the generated object file
|
||||||
|
// and thus register the ObjCModule.
|
||||||
|
volatile int ObjCModuleAnchorSource = 0;
|
||||||
|
|
||||||
|
} // namespace tidy
|
||||||
|
} // namespace clang
|
|
@ -17,6 +17,7 @@ add_clang_library(clangTidyPlugin
|
||||||
clangTidyMiscModule
|
clangTidyMiscModule
|
||||||
clangTidyModernizeModule
|
clangTidyModernizeModule
|
||||||
clangTidyMPIModule
|
clangTidyMPIModule
|
||||||
|
clangTidyObjCModule
|
||||||
clangTidyPerformanceModule
|
clangTidyPerformanceModule
|
||||||
clangTidyReadabilityModule
|
clangTidyReadabilityModule
|
||||||
clangTooling
|
clangTooling
|
||||||
|
|
|
@ -123,5 +123,10 @@ extern volatile int ReadabilityModuleAnchorSource;
|
||||||
static int LLVM_ATTRIBUTE_UNUSED ReadabilityModuleAnchorDestination =
|
static int LLVM_ATTRIBUTE_UNUSED ReadabilityModuleAnchorDestination =
|
||||||
ReadabilityModuleAnchorSource;
|
ReadabilityModuleAnchorSource;
|
||||||
|
|
||||||
|
// This anchor is used to force the linker to link the ObjCModule.
|
||||||
|
extern volatile int ObjCModuleAnchorSource;
|
||||||
|
static int LLVM_ATTRIBUTE_UNUSED ObjCModuleAnchorDestination =
|
||||||
|
ObjCModuleAnchorSource;
|
||||||
|
|
||||||
} // namespace tidy
|
} // namespace tidy
|
||||||
} // namespace clang
|
} // namespace clang
|
||||||
|
|
|
@ -27,6 +27,7 @@ target_link_libraries(clang-tidy
|
||||||
clangTidyMiscModule
|
clangTidyMiscModule
|
||||||
clangTidyModernizeModule
|
clangTidyModernizeModule
|
||||||
clangTidyMPIModule
|
clangTidyMPIModule
|
||||||
|
clangTidyObjCModule
|
||||||
clangTidyPerformanceModule
|
clangTidyPerformanceModule
|
||||||
clangTidyReadabilityModule
|
clangTidyReadabilityModule
|
||||||
clangTooling
|
clangTooling
|
||||||
|
|
|
@ -517,6 +517,11 @@ extern volatile int ReadabilityModuleAnchorSource;
|
||||||
static int LLVM_ATTRIBUTE_UNUSED ReadabilityModuleAnchorDestination =
|
static int LLVM_ATTRIBUTE_UNUSED ReadabilityModuleAnchorDestination =
|
||||||
ReadabilityModuleAnchorSource;
|
ReadabilityModuleAnchorSource;
|
||||||
|
|
||||||
|
// This anchor is used to force the linker to link the ObjCModule.
|
||||||
|
extern volatile int ObjCModuleAnchorSource;
|
||||||
|
static int LLVM_ATTRIBUTE_UNUSED ObjCModuleAnchorDestination =
|
||||||
|
ObjCModuleAnchorSource;
|
||||||
|
|
||||||
// This anchor is used to force the linker to link the HICPPModule.
|
// This anchor is used to force the linker to link the HICPPModule.
|
||||||
extern volatile int HICPPModuleAnchorSource;
|
extern volatile int HICPPModuleAnchorSource;
|
||||||
static int LLVM_ATTRIBUTE_UNUSED HICPPModuleAnchorDestination =
|
static int LLVM_ATTRIBUTE_UNUSED HICPPModuleAnchorDestination =
|
||||||
|
|
|
@ -57,6 +57,8 @@ The improvements are...
|
||||||
Improvements to clang-tidy
|
Improvements to clang-tidy
|
||||||
--------------------------
|
--------------------------
|
||||||
|
|
||||||
|
- New module `objc` for Objective-C style checks.
|
||||||
|
|
||||||
- Renamed checks to use correct term "implicit conversion" instead of "implicit
|
- Renamed checks to use correct term "implicit conversion" instead of "implicit
|
||||||
cast" and modified messages and option names accordingly:
|
cast" and modified messages and option names accordingly:
|
||||||
|
|
||||||
|
|
|
@ -68,6 +68,7 @@ Name prefix Description
|
||||||
``modernize-`` Checks that advocate usage of modern (currently "modern"
|
``modernize-`` Checks that advocate usage of modern (currently "modern"
|
||||||
means "C++11") language constructs.
|
means "C++11") language constructs.
|
||||||
``mpi-`` Checks related to MPI (Message Passing Interface).
|
``mpi-`` Checks related to MPI (Message Passing Interface).
|
||||||
|
``objc-`` Checks related to Objective-C coding conventions.
|
||||||
``performance-`` Checks that target performance-related issues.
|
``performance-`` Checks that target performance-related issues.
|
||||||
``readability-`` Checks that target readability-related issues that don't
|
``readability-`` Checks that target readability-related issues that don't
|
||||||
relate to any particular coding style.
|
relate to any particular coding style.
|
||||||
|
@ -341,6 +342,11 @@ The Directory Structure
|
||||||
|-- LLVMTidyModule.cpp
|
|-- LLVMTidyModule.cpp
|
||||||
|-- LLVMTidyModule.h
|
|-- LLVMTidyModule.h
|
||||||
...
|
...
|
||||||
|
|-- objc/ # Objective-C clang-tidy module.
|
||||||
|
|-+
|
||||||
|
|-- ObjCTidyModule.cpp
|
||||||
|
|-- ObjCTidyModule.h
|
||||||
|
...
|
||||||
|-- tool/ # Sources of the clang-tidy binary.
|
|-- tool/ # Sources of the clang-tidy binary.
|
||||||
...
|
...
|
||||||
test/clang-tidy/ # Integration tests.
|
test/clang-tidy/ # Integration tests.
|
||||||
|
@ -349,6 +355,7 @@ The Directory Structure
|
||||||
|-- ClangTidyTest.h
|
|-- ClangTidyTest.h
|
||||||
|-- GoogleModuleTest.cpp
|
|-- GoogleModuleTest.cpp
|
||||||
|-- LLVMModuleTest.cpp
|
|-- LLVMModuleTest.cpp
|
||||||
|
|-- ObjCModuleTest.cpp
|
||||||
...
|
...
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -14,6 +14,7 @@ add_extra_unittest(ClangTidyTests
|
||||||
LLVMModuleTest.cpp
|
LLVMModuleTest.cpp
|
||||||
MiscModuleTest.cpp
|
MiscModuleTest.cpp
|
||||||
NamespaceAliaserTest.cpp
|
NamespaceAliaserTest.cpp
|
||||||
|
ObjCModuleTest.cpp
|
||||||
OverlappingReplacementsTest.cpp
|
OverlappingReplacementsTest.cpp
|
||||||
UsingInserterTest.cpp
|
UsingInserterTest.cpp
|
||||||
ReadabilityModuleTest.cpp)
|
ReadabilityModuleTest.cpp)
|
||||||
|
@ -29,6 +30,7 @@ target_link_libraries(ClangTidyTests
|
||||||
clangTidyGoogleModule
|
clangTidyGoogleModule
|
||||||
clangTidyLLVMModule
|
clangTidyLLVMModule
|
||||||
clangTidyMiscModule
|
clangTidyMiscModule
|
||||||
|
clangTidyObjCModule
|
||||||
clangTidyReadabilityModule
|
clangTidyReadabilityModule
|
||||||
clangTidyUtils
|
clangTidyUtils
|
||||||
clangTooling
|
clangTooling
|
||||||
|
|
|
@ -0,0 +1,21 @@
|
||||||
|
//===---- ObjCModuleTest.cpp - clang-tidy ---------------------------------===//
|
||||||
|
//
|
||||||
|
// The LLVM Compiler Infrastructure
|
||||||
|
//
|
||||||
|
// This file is distributed under the University of Illinois Open Source
|
||||||
|
// License. See LICENSE.TXT for details.
|
||||||
|
//
|
||||||
|
//===----------------------------------------------------------------------===//
|
||||||
|
|
||||||
|
#include "ClangTidyTest.h"
|
||||||
|
#include "gtest/gtest.h"
|
||||||
|
|
||||||
|
namespace clang {
|
||||||
|
namespace tidy {
|
||||||
|
namespace test {
|
||||||
|
|
||||||
|
// TODO(D39142) Add unit tests for the ObjC module here once a check lands.
|
||||||
|
|
||||||
|
} // namespace test
|
||||||
|
} // namespace tidy
|
||||||
|
} // namespace clang
|
Loading…
Reference in New Issue