private void copyCppcheckRunModule() { String dexterHome = DexterConfig.getInstance().getDexterHome(); if (Strings.isNullOrEmpty(dexterHome)) { throw new DexterRuntimeException( "Can't initialize Cppcheck plugin, because the dexter_home is not initialized"); } // copy %DEXTER_HOME%/bin/cppcheck String zipFilePath = dexterHome; String cppcheckPath = ""; if (DexterUtil.getOS() == DexterUtil.OS.WINDOWS) { zipFilePath += "/temp/cppcheck-windows_" + PLUGIN_VERSION + ".zip"; cppcheckPath = "/cppcheck-windows.zip"; } else { // LINUX or MAC if (DexterUtil.getBit() == DexterUtil.BIT._32) { zipFilePath += "/temp/cppcheck-linux_" + PLUGIN_VERSION + "_32.zip"; cppcheckPath = "/cppcheck-linux-32.zip"; } else { zipFilePath += "/temp/cppcheck-linux_" + PLUGIN_VERSION + "_64.zip"; cppcheckPath = "/cppcheck-linux-64.zip"; } } final File file = new File(zipFilePath); if (!file.exists()) { final InputStream is = getClass().getResourceAsStream(cppcheckPath); if (is == null) { throw new DexterRuntimeException("can't find cppcheck.zip file: " + cppcheckPath); } try { FileUtils.copyInputStreamToFile(is, file); DexterUtil.unzip(zipFilePath, CPPCHECK_HOME_DIR); } catch (Exception e) { throw new DexterRuntimeException(e.getMessage(), e); } finally { try { is.close(); } catch (IOException e) { // do nothing } } } }