/*
   * (non-Javadoc)
   *
   * @see com.samsung.sec.dexter.core.plugin.IDexterPlugin#init()
   */
  @Override
  public void init() {
    initFolders();
    copyCppcheckRunModule();
    cppcheck.initCheckerConfig();
    cppcheck.initBaseCommand();

    if (DexterUtil.getOS() == DexterUtil.OS.LINUX || DexterUtil.getOS() == DexterUtil.OS.MAC) {
      checkCppcheckPermission();
    }
  }
  /*
   * (non-Javadoc)
   *
   * @see
   * com.samsung.sec.dexter.core.plugin.IDexterPlugin#analyze(com.samsung.
   * sec.dexter.core.analyzer.AnalysisConfig,
   * com.samsung.sec.dexter.core.analyzer.AnalysisResult)
   */
  @Override
  public AnalysisResult analyze(final AnalysisConfig config) {
    if (config != null) {
      cppcheck.setAnalysisConfig(config);
    } else {
      throw new DexterRuntimeException("analysis config is null");
    }

    IAnalysisEntityFactory factory = new AnalysisEntityFactory();
    AnalysisResult result = factory.createAnalysisResult(config);

    cppcheck.analyze(result);

    return result;
  }
 /*
  * (non-Javadoc)
  *
  * @see com.samsung.sec.dexter.core.plugin.IDexterPlugin#getCheckerConfig()
  */
 @Override
 public CheckerConfig getCheckerConfig() {
   return cppcheck.getCheckerConfig();
 }
 /*
  * (non-Javadoc)
  *
  * @see
  * com.samsung.sec.dexter.core.plugin.IDexterPlugin#setCheckerConfig(com
  * .samsung.sec.dexter.core.checker.CheckerConfig)
  */
 @Override
 public void setCheckerConfig(final CheckerConfig cc) {
   cppcheck.setCheckerConfig(cc);
 }