source: spip-zone/_outils_/validerPlugins/toutValider.php @ 44180

Last change on this file since 44180 was 44180, checked in by esj@…, 9 years ago

Amélioration de la DTD rétroactive de plugin.xml pour mieux repérer les fichiers vraiment problématiques. Et amélioration de l'affichage des erreurs.

File size: 2.3 KB
Line 
1<?php
2
3/***************************************************************************\
4 *  SPIP, Systeme de publication pour l'internet                           *
5 *                                                                         *
6 *  Copyright (c) 2001-2011                                                *
7 *                                                                         *
8 *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
9 *  Pour plus de details voir le fichier COPYING.txt ou l'aide en ligne.   *
10\***************************************************************************/
11
12// Ce script suppose que le repertoire outils/validerPlugins qui le contient
13// est installe a la racine de distribution de SPIP
14// ainsi que le repertoire plugins.
15// Il applique le validateur XML de SPIP sur tous ses fichiers plugin.xml,
16// sur la base de la DTD plugin.xml ici fournie
17// mais dont les lacunes sont inevitables faute de specifications precises.
18// Mais ca permet un premier diagnostic
19
20$dir = $argv[1] ? $argv[1] : 'plugins/';
21$nom = $argv[2] ? $argv[2] : 'plugin.xml';
22$dtd = $argv[3] ? $argv[3] : 'plugin.dtd';
23$pdtd = 'prive/' . $dtd;
24if (!file_exists('../../' . $pdtd)) {
25  copy($dtd, '../../' . $pdtd);
26  $dtd = false;
27}
28
29chdir('../../');
30require 'ecrire/inc_version.php';
31require 'ecrire/exec/valider_xml.php';
32$files = preg_files($dir,  '/' . $nom . '$');
33$nb_files = count($files);
34if (!$nb_files) {echo "Aucun fichier ne correspond";exit;}
35$sep = ($nb_files > 1) ? ";" : "\n";
36$all = array();
37$total = $ko = 0;
38foreach(valider_dir($files, 'xml', 'plugins') as $valid)  {
39  list($n, $length, $erreurs, $nom, $scorie) = $valid;
40  foreach ($erreurs as $k => $v) {
41    $msg = preg_replace('@<br[^>]*>|:|,@', ' ', $v[0]);
42    if ($nb_files > 1) $msg = preg_replace(',\s*[(][^)]*[)],', '', $msg);
43    $erreurs[$k] = trim(str_replace("\n", ' ', textebrut($msg)));
44    $msg = preg_replace(',<b>[^>]*</b>,', '* ', $msg);
45    @++$all[trim(str_replace("\n", '', textebrut($msg)))];
46  }
47  if ($n) {$total+=$n; $ko++;}
48  echo $nom, ': ', $n, " erreur(s)", $sep, join($sep, $erreurs), "\n";
49}
50
51echo "\n---- Statistiques des $total erreurs des $ko fichiers fautifs sur $nb_files ----\n";
52asort($all);
53foreach ($all as $k => $v) echo sprintf("%4d %s\n", $v, $k);
54if (!$dtd) unlink($pdtd);
55?>
Note: See TracBrowser for help on using the repository browser.