]> granicus.if.org Git - clang/commitdiff
[Analyzer] Change the default SA checkers for PS4
authorSean Eveson <eveson.sean@gmail.com>
Wed, 6 Jan 2016 10:03:58 +0000 (10:03 +0000)
committerSean Eveson <eveson.sean@gmail.com>
Wed, 6 Jan 2016 10:03:58 +0000 (10:03 +0000)
Summary: This patch removes security.*, unix.API and unix.Vfork from the default checkers for PS4.

Reviewers: dcoughlin, zaks.anna

Subscribers: cfe-commits

Differential Revision: http://reviews.llvm.org/D15888

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@256926 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Driver/Tools.cpp
test/Driver/ps4-analyzer-defaults.cpp [new file with mode: 0644]

index ba8d40596126cb135ebc4c8c7464ef90156b4a61..7923b838980c8611f86d5c9634be75f16dfab5d3 100644 (file)
@@ -3592,6 +3592,12 @@ void Clang::ConstructJob(Compilation &C, const JobAction &JA,
       if (!IsWindowsMSVC)
         CmdArgs.push_back("-analyzer-checker=unix");
 
+      // Disable some unix checkers for PS4.
+      if (IsPS4CPU) {
+        CmdArgs.push_back("-analyzer-disable-checker=unix.API");
+        CmdArgs.push_back("-analyzer-disable-checker=unix.Vfork");
+      }
+
       if (getToolChain().getTriple().getVendor() == llvm::Triple::Apple)
         CmdArgs.push_back("-analyzer-checker=osx");
 
@@ -3600,14 +3606,15 @@ void Clang::ConstructJob(Compilation &C, const JobAction &JA,
       if (types::isCXX(Input.getType()))
         CmdArgs.push_back("-analyzer-checker=cplusplus");
 
-      // Enable the following experimental checkers for testing.
-      CmdArgs.push_back(
-          "-analyzer-checker=security.insecureAPI.UncheckedReturn");
-      CmdArgs.push_back("-analyzer-checker=security.insecureAPI.getpw");
-      CmdArgs.push_back("-analyzer-checker=security.insecureAPI.gets");
-      CmdArgs.push_back("-analyzer-checker=security.insecureAPI.mktemp");
-      CmdArgs.push_back("-analyzer-checker=security.insecureAPI.mkstemp");
-      CmdArgs.push_back("-analyzer-checker=security.insecureAPI.vfork");
+      if (!IsPS4CPU) {
+        CmdArgs.push_back(
+            "-analyzer-checker=security.insecureAPI.UncheckedReturn");
+        CmdArgs.push_back("-analyzer-checker=security.insecureAPI.getpw");
+        CmdArgs.push_back("-analyzer-checker=security.insecureAPI.gets");
+        CmdArgs.push_back("-analyzer-checker=security.insecureAPI.mktemp");
+        CmdArgs.push_back("-analyzer-checker=security.insecureAPI.mkstemp");
+        CmdArgs.push_back("-analyzer-checker=security.insecureAPI.vfork");
+      }
 
       // Default nullability checks.
       CmdArgs.push_back("-analyzer-checker=nullability.NullPassedToNonnull");
diff --git a/test/Driver/ps4-analyzer-defaults.cpp b/test/Driver/ps4-analyzer-defaults.cpp
new file mode 100644 (file)
index 0000000..f5aacc6
--- /dev/null
@@ -0,0 +1,33 @@
+// Check that the default analyzer checkers for PS4 are:\r
+//   core\r
+//   cplusplus\r
+//   deadcode\r
+//   nullability\r
+//   unix\r
+// Excluding:\r
+//   unix.API\r
+//   unix.Vfork\r
+\r
+// Check for expected checkers\r
+// RUN: %clang -target x86_64-scei-ps4 --analyze %s -### 2>&1 \\r
+// RUN:   | FileCheck %s --check-prefix=CHECK-PS4-POS-CHECKERS\r
+//\r
+// Negative check for unexpected checkers\r
+// RUN: %clang -target x86_64-scei-ps4 --analyze %s -### 2>&1 \\r
+// RUN:   | FileCheck %s --check-prefix=CHECK-PS4-NEG-CHECKERS\r
+//\r
+// Check for all unix checkers except API and Vfork\r
+// RUN: %clang -target x86_64-scei-ps4 --analyze %s -### 2>&1 \\r
+// RUN:   | FileCheck %s --check-prefix=CHECK-PS4-UNIX-CHECKERS\r
+\r
+// CHECK-PS4-POS-CHECKERS-DAG: analyzer-checker=core\r
+// CHECK-PS4-POS-CHECKERS-DAG: analyzer-checker=cplusplus\r
+// CHECK-PS4-POS-CHECKERS-DAG: analyzer-checker=deadcode\r
+// CHECK-PS4-POS-CHECKERS-DAG: analyzer-checker=nullability\r
+//\r
+// CHECK-PS4-NEG-CHECKERS-NOT: analyzer-checker={{osx|security}}\r
+//\r
+// CHECK-PS4-UNIX-CHECKERS: analyzer-checker=unix\r
+// CHECK-PS4-UNIX-CHECKERS-DAG: analyzer-disable-checker=unix.API\r
+// CHECK-PS4-UNIX-CHECKERS-DAG: analyzer-disable-checker=unix.Vfork\r
+// CHECK-PS4-UNIX-CHECKERS-NOT: analyzer-checker=unix.{{API|Vfork}}\r