llvm-project/clang/test/Analysis/show-checker-list.c
Kristof Umann 5bc40d9b18 [analyzer] List checkers in 3 categories: released, alpha, developer
Previously, the only way to display the list of available checkers was
to invoke the analyzer with -analyzer-checker-help frontend flag. This
however wasn't really great from a maintainer standpoint: users came
across checkers meant strictly for development purposes that weren't to
be tinkered with, or those that were still in development. This patch
creates a clearer division in between these categories.

From now on, we'll have 3 flags to display the list checkers. These
lists are mutually exclusive and can be used in any combination (for
example to display both stable and alpha checkers).

-analyzer-checker-help: Displays the list for stable, production ready
                        checkers.

-analyzer-checker-help-alpha: Displays the list for in development
                              checkers. Enabling is discouraged
                              for non-development purposes.

-analyzer-checker-help-developer: Modeling and debug checkers. Modeling
                                  checkers shouldn't be enabled/disabled
                                  by hand, and debug checkers shouldn't
                                  be touched by users.

Differential Revision: https://reviews.llvm.org/D62093

llvm-svn: 361558
2019-05-23 21:46:51 +00:00

61 lines
2.2 KiB
C

// RUN: %clang_cc1 -analyzer-checker-help \
// RUN: 2>&1 | FileCheck %s -check-prefix=CHECK-STABLE
// RUN: %clang_cc1 -analyzer-checker-help-alpha \
// RUN: 2>&1 | FileCheck %s -check-prefix=CHECK-ALPHA
// RUN: %clang_cc1 -analyzer-checker-help-developer \
// RUN: 2>&1 | FileCheck %s -check-prefix=CHECK-DEVELOPER
// RUN: %clang_cc1 -analyzer-checker-help-developer \
// RUN: -analyzer-checker-help-alpha \
// RUN: 2>&1 | FileCheck %s -check-prefix=CHECK-DEVELOPER-ALPHA
// RUN: %clang_cc1 -analyzer-checker-help \
// RUN: -analyzer-checker-help-alpha \
// RUN: 2>&1 | FileCheck %s -check-prefix=CHECK-STABLE-ALPHA
// RUN: %clang_cc1 -analyzer-checker-help \
// RUN: -analyzer-checker-help-developer \
// RUN: 2>&1 | FileCheck %s -check-prefix=CHECK-STABLE-DEVELOPER
// RUN: %clang_cc1 -analyzer-checker-help \
// RUN: -analyzer-checker-help-alpha \
// RUN: -analyzer-checker-help-developer \
// RUN: 2>&1 | FileCheck %s -check-prefix=CHECK-STABLE-ALPHA-DEVELOPER
// CHECK-STABLE-NOT: alpha.unix.Chroot
// CHECK-DEVELOPER-NOT: alpha.unix.Chroot
// CHECK-ALPHA: alpha.unix.Chroot
// Note that alpha.cplusplus.IteratorModeling is not only an alpha, but also a
// hidden checker. In this case, we'd only like to see it in the developer list.
// CHECK-ALPHA-NOT: alpha.cplusplus.IteratorModeling
// CHECK-DEVELOPER: alpha.cplusplus.IteratorModeling
// CHECK-STABLE: core.DivideZero
// CHECK-DEVELOPER-NOT: core.DivideZero
// CHECK-ALPHA-NOT: core.DivideZero
// CHECK-STABLE-NOT: debug.ConfigDumper
// CHECK-DEVELOPER: debug.ConfigDumper
// CHECK-ALPHA-NOT: debug.ConfigDumper
// CHECK-STABLE-ALPHA: alpha.unix.Chroot
// CHECK-DEVELOPER-ALPHA: alpha.unix.Chroot
// CHECK-STABLE-DEVELOPER-NOT: alpha.unix.Chroot
// CHECK-STABLE-ALPHA: core.DivideZero
// CHECK-DEVELOPER-ALPHA-NOT: core.DivideZero
// CHECK-STABLE-DEVELOPER: core.DivideZero
// CHECK-STABLE-ALPHA-NOT: debug.ConfigDumper
// CHECK-DEVELOPER-ALPHA: debug.ConfigDumper
// CHECK-STABLE-DEVELOPER: debug.ConfigDumper
// CHECK-STABLE-ALPHA-DEVELOPER: alpha.unix.Chroot
// CHECK-STABLE-ALPHA-DEVELOPER: core.DivideZero
// CHECK-STABLE-ALPHA-DEVELOPER: debug.ConfigDumper