コード例 #1
0
ファイル: class-wp-cli.php プロジェクト: grappler/vip-scanner
 /**
  * Runs the analyzers for the given review on the theme.
  * 
  * You can change the <depth> parameter to indicate how many levels of hierarchy
  * you would like outputted. 0 outputs everything.
  * 
  * @subcommand analyze-theme
  * @synopsis --theme=<theme-name> --scan_type=<scan-type> [--depth=<depth>]
  */
 public function analyze_theme($args, $assoc_args)
 {
     $defaults = array('theme' => null, 'scan_type' => 'WP.org Theme Review', 'depth' => 1);
     $args = wp_parse_args($assoc_args, $defaults);
     $scanner = VIP_Scanner::get_instance()->run_theme_review($args['theme'], $args['scan_type'], array('analyzers'));
     if (!$scanner) {
         WP_CLI::error(sprintf('Scanning of %s failed', $args['theme']));
     }
     $empty = array();
     $display_args = array('bare' => true, 'depth' => $args['depth']);
     foreach ($scanner->renderers as $renderer) {
         // Display empty renderers after the others
         if ($renderer->is_empty()) {
             $empty[] = $renderer;
             continue;
         }
         if ($renderer->name() !== 'Files') {
             $renderer->analyze_prefixes();
         }
         WP_CLI::line($renderer->display(false, $display_args));
     }
     foreach ($empty as $renderer) {
         $renderer->display(true, $display_args);
     }
 }
コード例 #2
0
 static function get_instance()
 {
     if (!isset(self::$instance)) {
         $class_name = __CLASS__;
         self::$instance = new $class_name();
     }
     return self::$instance;
 }
コード例 #3
0
 function get_default_review_type()
 {
     $review_type = get_option('vip-scanner-default-async-review-type', null);
     if (is_null($review_type)) {
         $review_types = $this->vip_scanner_instance->get_review_types();
         $review_type = $review_types[VIP_Scanner_UI::get_instance()->default_review];
     }
     return $review_type;
 }
コード例 #4
0
 public function testScanner()
 {
     $vipsccanner = VIP_Scanner::get_instance();
     $vipsccanner->register_review('VIPInitCheck', array('VIPInitCheck'), array('ThemeAnalyzer'));
     $review = $vipsccanner->get_review('VIPInitCheck');
     $scanner = new ThemeScanner(dirname($this->_functions_file), $review);
     $scanner->scan(array('checks'));
     $this->assertFalse($scanner->has_error('vip-init'));
 }
コード例 #5
0
 function get_cached_theme_review($theme, $review)
 {
     $transient_key = 'vip_scanner_' . $this->get_version() . '_' . md5($theme . $review);
     if (false === ($scanner = get_transient($transient_key))) {
         $scanner = VIP_Scanner::get_instance()->run_theme_review($theme, $review);
         @set_transient($transient_key, $scanner);
     }
     return $scanner;
 }
コード例 #6
0
<?php

// Include the form config
include_once VIP_SCANNER_DIR . '/config-vip-scanner-wpcom-form.php';
// TODO: Not sure if this is the best place or way to handle this...
VIP_Scanner::get_instance()->register_review('Undefined Function Check', array('UndefinedFunctionCheck'));
VIP_Scanner::get_instance()->register_review('WP.com Theme Review', array('AtPackageCheck', 'BodyClassCheck', 'CDNCheck', 'CommentsCheck', 'CustomizerCheck', 'DeprecatedConstantsCheck', 'DeprecatedFunctionsCheck', 'DeprecatedParametersCheck', 'EscapingCheck', 'FirstPostPromptCheck', 'ForbiddenConstantsCheck', 'ForbiddenFunctionsCheck', 'ForbiddenGoogleCheck', 'ForbiddenLibrariesCheck', 'ForbiddenPHPFunctionsCheck', 'HeaderCheck', 'HooksCheck', 'InternationalizedStringCheck', 'jQueryCheck', 'JetpackCheck', 'LanguagePacksCheck', 'MasonryCheck', 'PostThumbnailsCheck', 'ScreenshotCheck', 'ThemecolorsCheck', 'ThemeNameCheck', 'TitleCheck', 'VCMergeConflictCheck', 'WidgetsCheck', 'JavaScriptLintCheck'), array('PHPAnalyzer', 'CustomResourceAnalyzer', 'ThemeAnalyzer'));
VIP_Scanner::get_instance()->register_review('VIP Theme Review', array('VIPWhitelistCheck', 'VIPRestrictedPatternsCheck', 'VIPRestrictedCommandsCheck', 'VIPInitCheck', 'PHPShortTagsCheck', 'PHPClosingTagsCheck', 'VCMergeConflictCheck', 'WordPressCodingStandardsCheck', 'ClamAVCheck'), array('PHPAnalyzer', 'CustomResourceAnalyzer', 'ThemeAnalyzer'));
コード例 #7
0
<?php

// Include the form config
include_once VIP_SCANNER_DIR . '/config-vip-scanner-wpcom-form.php';
// TODO: Not sure if this is the best place or way to handle this...
VIP_Scanner::get_instance()->register_review('Undefined Function Check', array('UndefinedFunctionCheck'));
VIP_Scanner::get_instance()->register_review('WP.com Theme Review', array('AtPackageCheck', 'BodyClassCheck', 'CDNCheck', 'CheckedSelectedDisabledCheck', 'CommentsCheck', 'CustomizerCheck', 'DeprecatedConstantsCheck', 'DeprecatedFunctionsCheck', 'DeprecatedParametersCheck', 'EscapingCheck', 'FirstPostPromptCheck', 'ForbiddenConstantsCheck', 'ForbiddenFunctionsCheck', 'ForbiddenGoogleCheck', 'ForbiddenLibrariesCheck', 'ForbiddenPHPFunctionsCheck', 'HeaderCheck', 'HooksCheck', 'InternationalizedStringCheck', 'jQueryCheck', 'JetpackCheck', 'LanguagePacksCheck', 'MasonryCheck', 'PostThumbnailsCheck', 'ScreenshotCheck', 'StyleHeadersCheck', 'ThemecolorsCheck', 'ThemeContentWidthCheck', 'ThemeNameCheck', 'ThemePostPaginationCheck', 'ThemeStyleRequiredCheck', 'ThemeTagCheck', 'TimeDateCheck', 'TitleCheck', 'VCMergeConflictCheck', 'WidgetsCheck', 'JavaScriptLintCheck'), array('CodeAnalyzer', 'ResourceAnalyzer', 'ThemeAnalyzer'));
VIP_Scanner::get_instance()->register_review('VIP Theme Review', array('CheckedSelectedDisabledCheck', 'DeprecatedConstantsCheck', 'DeprecatedFunctionsCheck', 'DeprecatedParametersCheck', 'jQueryCheck', 'VIPWhitelistCheck', 'VIPRestrictedClassesCheck', 'VIPRestrictedPatternsCheck', 'VIPRestrictedCommandsCheck', 'VIPInitCheck', 'VIPParametersCheck', 'PHPShortTagsCheck', 'PHPClosingTagsCheck', 'StyleHeadersCheck', 'VCMergeConflictCheck', 'WordPressCodingStandardsCheck', 'ClamAVCheck', 'AdBustersCheck'), array('CodeAnalyzer', 'ResourceAnalyzer', 'ThemeAnalyzer'));
コード例 #8
0
ファイル: vip-scanner.php プロジェクト: Zackio/vip-scanner
    }
});
// Has PHP-Parser been already loaded, e.g. by another plugin?
if (class_exists('PhpParser\\Parser')) {
    wp_die('A PHP-Parser instance was loaded before VIP-scanner. ' . 'If another plugin uses PHP-Parser, please deactivate it.');
} elseif (file_exists(PHP_PARSER_BOOTSTRAP)) {
    require_once PHP_PARSER_BOOTSTRAP;
} else {
    wp_die('VIP-Scanner could not find PHP-Parser, which it requires to run. ' . 'Please refer to the "Requirements" section in readme.md. <br>(tl;dr
	        You probably need to run "git submodule update --init --recursive"
	        inside the vip-scanner folder in the plugins directory to fetch
	        the PHP-Parser submodule that is now required.)');
}
spl_autoload_register('vip_scanner_autoload');
require_once VIP_SCANNER_DIR . '/class-vip-scanner.php';
VIP_Scanner::get_instance();
require_once VIP_SCANNER_DIR . '/config-vip-scanner.php';
if (defined('WP_CLI') && WP_CLI) {
    require_once VIP_SCANNER_DIR . '/class-wp-cli.php';
}
if (is_admin()) {
    require_once VIP_SCANNER_DIR . '/admin/class-vip-scanner-ui.php';
    VIP_Scanner_UI::get_instance();
    VIP_Scanner_Async::get_instance();
}
function vip_scanner_autoload($class_name)
{
    // Class names that are in files that aren't found by our scheme below.
    $other = array('VIP_PregFile' => 'class-preg-file.php', 'VIP_Scanner_Async' => 'vip-scanner-async.php', 'AnalyzedPHPFile' => 'class-analyzed-php-file.php', 'AnalyzedCSSFile' => 'class-analyzed-css-file.php', 'ElementGroup' => 'elements/class-element-group.php');
    if (array_key_exists($class_name, $other)) {
        require VIP_SCANNER_DIR . '/' . $other[$class_name];
コード例 #9
0
 private static function is_review_type($type)
 {
     global $vip_scanner;
     $review_types = VIP_Scanner::get_instance()->get_review_types();
     $cur = isset($_REQUEST['vip-scanner-review-type']) ? $_REQUEST['vip-scanner-review-type'] : $review_types[$vip_scanner->default_review];
     return $cur == $type;
 }
コード例 #10
0
 /**
  * Runs the analyzers for the given review on the theme.
  *
  * [--theme=<theme>]
  * : Theme to scan. Defaults to current.
  *
  * [--scan_type=<scan_type>]
  * : Type of scan to perform. Defaults to "VIP Theme Review"
  *
  * [--depth=<depth>]
  * : Number of levels of hierarchy to output. 0 outputs everything.
  * Defaults to 1.
  * 
  * @subcommand analyze-theme
  */
 public function analyze_theme($args, $assoc_args)
 {
     $defaults = array('theme' => get_option('stylesheet'), 'scan_type' => 'VIP Theme Review', 'depth' => 1);
     $args = wp_parse_args($assoc_args, $defaults);
     $scanner = VIP_Scanner::get_instance()->run_theme_review($args['theme'], $args['scan_type'], array('analyzers'));
     if (!$scanner) {
         WP_CLI::error(sprintf('Scanning of %s failed', $args['theme']));
     }
     $errors = $scanner->get_errors();
     if (!empty($errors)) {
         self::display_errors($scanner, 'table');
     }
     $empty = array();
     $display_args = array('bare' => true, 'depth' => intval($args['depth']));
     foreach ($scanner->elements as $element) {
         // Display empty elements after the others
         if ($element->is_empty()) {
             $empty[] = $element;
             continue;
         }
         if ($element->name() !== 'Files') {
             $element->analyze_prefixes();
         }
         $r = new ElementRenderer($element);
         WP_CLI::line($r->display(false, $display_args));
     }
     foreach ($empty as $element) {
         $r = new ElementRenderer($element);
         $r->display(true, $display_args);
     }
 }