
Summary: Now that clang is going to be able to build the Linux kernel again on x86, and we have gen_compile_commands.py upstream for generating compile_commands.json, clang-tidy can be used on the Linux kernel source. To that end, this commit adds a new clang-tidy module to be used for checks specific to Linux kernel source. The Linux kernel follows its own style of C, and it will be useful to separate those checks into their own module. This also adds an initial check that makes sure that return values from the kernel error functions like PTR_ERR and ERR_PTR are checked. It also makes sure that any functions that directly return values from these functions are checked. Subscribers: xazax.hun, gribozavr, Eugene.Zelenko, lebedev.ri, mgorny, jdoerfert, cfe-commits Tags: #clang, #clang-tools-extra Reviewers: aaron.ballman, alexfh, hokein, JonasToth Differential Revision: https://reviews.llvm.org/D59963 llvm-svn: 367071
38 lines
1.3 KiB
C++
38 lines
1.3 KiB
C++
//===--- LinuxKernelTidyModule.cpp - clang-tidy----------------------------===//
|
|
//
|
|
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
|
|
// See https://llvm.org/LICENSE.txt for license information.
|
|
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
|
|
//
|
|
//===----------------------------------------------------------------------===//
|
|
|
|
#include "../ClangTidy.h"
|
|
#include "../ClangTidyModule.h"
|
|
#include "../ClangTidyModuleRegistry.h"
|
|
#include "MustCheckErrsCheck.h"
|
|
|
|
namespace clang {
|
|
namespace tidy {
|
|
namespace linuxkernel {
|
|
|
|
/// This module is for checks specific to the Linux kernel.
|
|
class LinuxKernelModule : public ClangTidyModule {
|
|
public:
|
|
void addCheckFactories(ClangTidyCheckFactories &CheckFactories) override {
|
|
CheckFactories.registerCheck<MustCheckErrsCheck>(
|
|
"linuxkernel-must-check-errs");
|
|
}
|
|
};
|
|
// Register the LinuxKernelTidyModule using this statically initialized
|
|
// variable.
|
|
static ClangTidyModuleRegistry::Add<LinuxKernelModule>
|
|
X("linux-module", "Adds checks specific to the Linux kernel.");
|
|
} // namespace linuxkernel
|
|
|
|
// This anchor is used to force the linker to link in the generated object file
|
|
// and thus register the LinuxKernelModule.
|
|
volatile int LinuxKernelModuleAnchorSource = 0;
|
|
|
|
} // namespace tidy
|
|
} // namespace clang
|