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");
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");
--- /dev/null
+// 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