/**
  * @param Payload $payload
  * @param Commit $commit
  * @param string $url
  * @return boolean
  */
 protected function validateCodeStyleOfPhpFile(Payload $payload, Commit $commit, $url, $path)
 {
     $contents = file_get_contents($url);
     $syntaxCommand = 'php -l';
     list($result, $errors) = $this->passStdinToCommand($syntaxCommand, $contents);
     if (FALSE === empty($errors)) {
         $errors = trim($errors);
         $errors = str_replace('parse error in - on line', 'parse error in ' . $path . ' on line', $errors);
         $payload->storeCommitValidation($payload->getPullRequest(), $commit, $errors, $path, substr($errors, 0, strrpos($errors, ' ')));
         $this->markCommit($payload, $commit, 'PHP syntax check failed! ' . $errors);
         return FALSE;
     }
     $codeStyleCommand = 'vendor/bin/phpcs --standard=' . $this->getSettingValue(self::OPTION_CODE_STYLE_RULES) . ' --report=json';
     list($result, $errors) = $this->passStdinToCommand($codeStyleCommand, $contents);
     if (FALSE === empty($errors)) {
         $payload->getResponse()->addOutputFromPlugin($this, array('Error running PHPCS: ' . $errors));
         return FALSE;
     }
     $validation = json_decode($result, JSON_OBJECT_AS_ARRAY);
     $errorsAndWarnings = (int) $validation['totals']['errors'] + (int) $validation['totals']['warnings'];
     if (0 === $errorsAndWarnings) {
         $this->markCommit($payload, $commit, 'No parsing errors and coding style is valid', 'success');
         return TRUE;
     } else {
         $messages = $validation['files']['STDIN']['messages'];
         foreach ($messages as $messageData) {
             $payload->storeCommitValidation($payload->getPullRequest(), $commit, $messageData['message'], $path, $messageData['line']);
             $this->markCommit($payload, $commit, 'Commit has one or more coding standards violations');
         }
         return FALSE;
     }
 }