]> granicus.if.org Git - php/commitdiff
sync with the incremental and inter-file analysis option
authorAnatol Belski <ab@php.net>
Tue, 7 Mar 2017 14:27:57 +0000 (15:27 +0100)
committerAnatol Belski <ab@php.net>
Tue, 7 Mar 2017 14:27:57 +0000 (15:27 +0100)
available as of cppcheck 1.77

win32/build/config.w32
win32/build/confutils.js

index 4c476e682aa9bd9e7d574b50ad07ea327e245d1f..1269c6e30f5faaa770f85a9b4a6b4d7b76e068ab 100644 (file)
@@ -123,6 +123,94 @@ add_extra_dirs();
 
 //DEFINE("PHP_BUILD", PHP_PHP_BUILD);
 
+ARG_WITH("analyzer", "Enable static analyzer. Pass vs for Visual Studio, clang for clang, cppcheck for Cppcheck, pvs for PVS-Studio", "no");
+if (PHP_ANALYZER == "vs") {
+       ADD_FLAG("CFLAGS", " /analyze ");
+       ADD_FLAG("CFLAGS", " /wd6308 ");
+} else if (PHP_ANALYZER == "clang") {
+       var clang_cl = false;
+
+       if (FSO.FileExists(PROGRAM_FILES + "\\LLVM\\bin\\clang-cl.exe")) {
+               clang_cl = PROGRAM_FILES + "\\LLVM\\bin\\clang-cl.exe";
+       } else if (FSO.FileExists(PROGRAM_FILESx86 + "\\LLVM\\bin\\clang-cl.exe")) {
+               clang_cl = PROGRAM_FILESx86 + "\\LLVM\\bin\\clang-cl.exe";
+       }
+
+       if (!clang_cl) {
+               if (false == PATH_PROG('clang-cl', null, 'CLANG_CL')) {
+                       WARNING("Couldn't find clang binaries, static analyze was disabled");
+                       PHP_ANALYZER = "no";
+               }
+       } else {
+               DEFINE("CLANG_CL", clang_cl);
+       }
+} else if (PHP_ANALYZER == "cppcheck") {
+
+       var cppcheck = false;
+
+       if (FSO.FileExists(PROGRAM_FILES + "\\Cppcheck\\cppcheck.exe")) {
+               cppcheck = PROGRAM_FILES + "\\Cppcheck\\cppcheck.exe";
+       } else if (FSO.FileExists(PROGRAM_FILESx86 + "\\Cppcheck\\cppcheck.exe")) {
+               cppcheck = PROGRAM_FILESx86 + "\\Cppcheck\\cppcheck.exe";
+       }
+       if (!cppcheck) {
+               if (false == PATH_PROG('cppcheck', null, 'CPPCHECK')) {
+                       WARNING("Couldn't find Cppcheck binaries, static analyze was disabled");
+                       PHP_ANALYZER = "no";
+               } else {
+                       cppcheck = get_define("CPPCHECK");
+               }
+       } else {
+               DEFINE("CPPCHECK", cppcheck);
+       }
+
+       if (cppcheck) {
+               var _tmp = execute(cppcheck + " --version").split(/ /)[1];
+               var cppcheck_ver = [
+                       parseInt(_tmp.split(".")[0]),
+                       parseInt(_tmp.split(".")[1]),
+               ];
+               if (cppcheck_ver[0] > 1 || cppcheck_ver[0] == 1 && cppcheck_ver[1] >= 77) {
+                       var build_dir = get_define("BUILD_DIR");
+                       var cppcheck_build_dir = build_dir + "\\cppcheck_build";
+                       if (!FSO.FolderExists(cppcheck_build_dir)) {
+                               FSO.CreateFolder(cppcheck_build_dir);
+                       }
+                       DEFINE("CPPCHECK_BUILD_DIR", cppcheck_build_dir);
+               }
+       }
+
+} else if (PHP_ANALYZER == "pvs") {
+       var pvs_studio = false;
+
+       if (FSO.FileExists(PROGRAM_FILES + "\\PVS-Studio\\x64\\PVS-Studio.exe")) {
+               pvs_studio = PROGRAM_FILES + "\\PVS-Studio\\x86\\PVS-Studio.exe";
+       } else if (FSO.FileExists(PROGRAM_FILESx86 + "\\PVS-Studio\\x64\\PVS-Studio.exe")) {
+               pvs_studio = PROGRAM_FILESx86 + "\\PVS-Studio\\x64\\PVS-Studio.exe";
+       }
+
+       if (!pvs_studio) {
+               WARNING("Couldn't find PVS-Studio binaries, static analyze was disabled");
+               PHP_ANALYZER = "no";
+       } else {
+               var pvscfg = FSO.CreateTextFile("PVS-Studio.conf", true);
+               DEFINE("PVS_STUDIO", pvs_studio);
+
+               pvscfg.WriteLine("exclude-path = " + VCINSTALLDIR);
+               if (FSO.FolderExists(PROGRAM_FILESx86 + "\\windows kits\\")) {
+                       pvscfg.WriteLine("exclude-path = " + PROGRAM_FILESx86 + "\\windows kits\\");
+               } else if (FSO.FolderExists(PROGRAM_FILES + "\\windows kits\\")) {
+                       pvscfg.WriteLine("exclude-path = " + PROGRAM_FILES + "\\windows kits\\");
+               }
+               pvscfg.WriteLine("vcinstalldir = " + VCINSTALLDIR);
+               pvscfg.WriteLine("platform = " + (X64 ? 'x64' : 'Win32'));
+               pvscfg.WriteLine("preprocessor = visualcpp");
+               pvscfg.WriteLine("language = C");
+       }
+} else {
+       PHP_ANALYZER = "no"
+}
+
 STDOUT.WriteBlankLines(1);
 STDOUT.WriteLine("Build dir: " + get_define('BUILD_DIR'));
 STDOUT.WriteLine("PHP Core:  " + get_define('PHPDLL') + " and " + get_define('PHPLIB'));
@@ -212,75 +300,6 @@ if (PHP_SECURITY_FLAGS == "yes") {
        ADD_FLAG("LDFLAGS", "/NXCOMPAT /DYNAMICBASE ");
 }
 
-ARG_WITH("analyzer", "Enable static analyzer. Pass vs for Visual Studio, clang for clang, cppcheck for Cppcheck, pvs for PVS-Studio", "no");
-if (PHP_ANALYZER == "vs") {
-       ADD_FLAG("CFLAGS", " /analyze ");
-       ADD_FLAG("CFLAGS", " /wd6308 ");
-} else if (PHP_ANALYZER == "clang") {
-       var clang_cl = false;
-
-       if (FSO.FileExists(PROGRAM_FILES + "\\LLVM\\bin\\clang-cl.exe")) {
-               clang_cl = PROGRAM_FILES + "\\LLVM\\bin\\clang-cl.exe";
-       } else if (FSO.FileExists(PROGRAM_FILESx86 + "\\LLVM\\bin\\clang-cl.exe")) {
-               clang_cl = PROGRAM_FILESx86 + "\\LLVM\\bin\\clang-cl.exe";
-       }
-
-       if (!clang_cl) {
-               if (false == PATH_PROG('clang-cl', null, 'CLANG_CL')) {
-                       WARNING("Couldn't find clang binaries, static analyze was disabled");
-                       PHP_ANALYZER = "no";
-               }
-       } else {
-               DEFINE("CLANG_CL", clang_cl);
-       }
-} else if (PHP_ANALYZER == "cppcheck") {
-
-       var cppcheck = false;
-
-       if (FSO.FileExists(PROGRAM_FILES + "\\Cppcheck\\cppcheck.exe")) {
-               cppcheck = PROGRAM_FILES + "\\Cppcheck\\cppcheck.exe";
-       } else if (FSO.FileExists(PROGRAM_FILESx86 + "\\Cppcheck\\cppcheck.exe")) {
-               cppcheck = PROGRAM_FILESx86 + "\\Cppcheck\\cppcheck.exe";
-       }
-       if (!cppcheck) {
-               if (false == PATH_PROG('cppcheck', null, 'CPPCHECK')) {
-                       WARNING("Couldn't find Cppcheck binaries, static analyze was disabled");
-                       PHP_ANALYZER = "no";
-               }
-       } else {
-               DEFINE("CPPCHECK", cppcheck);
-       }
-} else if (PHP_ANALYZER == "pvs") {
-       var pvs_studio = false;
-
-       if (FSO.FileExists(PROGRAM_FILES + "\\PVS-Studio\\x64\\PVS-Studio.exe")) {
-               pvs_studio = PROGRAM_FILES + "\\PVS-Studio\\x86\\PVS-Studio.exe";
-       } else if (FSO.FileExists(PROGRAM_FILESx86 + "\\PVS-Studio\\x64\\PVS-Studio.exe")) {
-               pvs_studio = PROGRAM_FILESx86 + "\\PVS-Studio\\x64\\PVS-Studio.exe";
-       }
-
-       if (!pvs_studio) {
-               WARNING("Couldn't find PVS-Studio binaries, static analyze was disabled");
-               PHP_ANALYZER = "no";
-       } else {
-               var pvscfg = FSO.CreateTextFile("PVS-Studio.conf", true);
-               DEFINE("PVS_STUDIO", pvs_studio);
-
-               pvscfg.WriteLine("exclude-path = " + VCINSTALLDIR);
-               if (FSO.FolderExists(PROGRAM_FILESx86 + "\\windows kits\\")) {
-                       pvscfg.WriteLine("exclude-path = " + PROGRAM_FILESx86 + "\\windows kits\\");
-               } else if (FSO.FolderExists(PROGRAM_FILES + "\\windows kits\\")) {
-                       pvscfg.WriteLine("exclude-path = " + PROGRAM_FILES + "\\windows kits\\");
-               }
-               pvscfg.WriteLine("vcinstalldir = " + VCINSTALLDIR);
-               pvscfg.WriteLine("platform = " + (X64 ? 'x64' : 'Win32'));
-               pvscfg.WriteLine("preprocessor = visualcpp");
-               pvscfg.WriteLine("language = C");
-       }
-} else {
-       PHP_ANALYZER = "no"
-}
-
 if (CLANG_TOOLSET) {
        ARG_WITH("uncritical-warn-choke", "Disable some uncritical warnings", "yes");
        if (PHP_UNCRITICAL_WARN_CHOKE != "no") {
index 841fa293df7e237114d72fae9af8a435dc199b67..89995171b7e61a084a65bbd17686dfcd877056cb 100644 (file)
@@ -1637,6 +1637,11 @@ function ADD_SOURCES(dir, file_list, target, obj_dir)
                                                /* "--rule-file=win32\build\cppcheck_rules.xml " + */
                                                " --std=c89 --std=c++11 " + 
                                                "--quiet --inconclusive --template=vs ";
+
+                       var cppcheck_build_dir = get_define("CPPCHECK_BUILD_DIR");
+                       if (!!cppcheck_build_dir) {
+                               analyzer_base_args += "--cppcheck-build-dir=$(CPPCHECK_BUILD_DIR)";
+                       }
                }
 
                if (PHP_MP_DISABLED) {