Carnet Wiki

Analyse statique

Version 4 — Juin 2023 James

Voir bootstrap, framework, sdk

#!/usr/bin/env bash


# Récupération de la liste des baselines
find plugins-dist/spip -name phpstan-baseline.neon \
    | grep -v vendor > tmp/baselines.txt


bash
# Récupération de la liste des baselines
find plugins-dist/spip -name phpstan-baseline.neon | grep -v vendor > tmp/baselines.txt # Récupération de la liste des fonctions non trouvées par phpstan
cat tmp/baselines.txt | xargs -I % grep Function % \
| grep ’not found’ | sed -e ’s/.*Function //’ -e ’s/ not found.*//’ | wc - l
#
2052
cat txt
rm tmp/baselines.
txt lst | xargs -I % egrep - rn exclude-dir tests ’^ function  %\(’ ecrire | grep Function  % cut - d  : -f1 | grep not found \
sort | sed - e s /. uniq > tmp/files .
*Function //’ -e ’s/ not found.*//’ | sort | uniq > tmp/called.txt
lst
wc -l tmp/called.txt
# 330 tmp/called.txt
# Trouver les fichiers spip déclarant ces fonctions
cat tmp/called.
txt
wc -l tmp/files.
lst
# 64 tmp/files.
txt

 


# Trouver les fichiers spip déclarant ces fonctions
rm -f tmp/baselines.txt
cat tmp/called.txt | xargs -I % egrep -rn --exclude-dir tests '^function %\(' ecrire \
    | cut -d: -f1 | sort | uniq > tmp/files.txt
wc -l tmp/files.txt
# 64 tmp/files.txt


rm -f tmp/spip_files_functions.txt
while read fichier
do
    for f in $(egrep '^function (.*)\(' $fichier | sed -e 's/function //' -e 's/(.*//')
    do
        echo $fichier,$f >> tmp/spip_files_functions.txt
    done
done < tmp/files.txt
wc -l tmp/spip_files_functions.txt
# 1244 tmp/spip_files_functions.txt


echo "ecrire/inc/utils.php
ecrire/base/connect_sql.php
ecrire/base/objets.php
ecrire/inc/flock.php" > tmp/bootstrap.txt
rm -f tmp/bootstrap_files_functions.txt
while read fichier
do
    for f in $(egrep '^function (.*)\(' $fichier | sed -e 's/function //' -e 's/(.*//')
    do
        echo $fichier,$f >> tmp/bootstrap_files_functions.txt
    done
done < tmp/bootstrap.txt
wc -l tmp/bootstrap_files_functions.txt
# 135 tmp/bootstrap_files_functions.txt


rm -f tmp/non_called_bootstrap.txt
for f in `cat tmp/bootstrap_files_functions.txt`
do
    fonction=$(cut -d, -f2 <<< $f)
    if ! egrep -c "^${fonction}$" tmp/called.txt > /dev/null
    then
        echo $fonction >> tmp/non_called_bootstrap.txt
    fi
done
wc -l tmp/non_called_bootstrap.txt

Fichiers
Liste des fichiers contenant au moins une fonction appelée par un plugin dist
Fonctions
Liste des fonctions appelées au moins une fois dans du code php des plugins dist

Séquence de démarrage de SPIP

Site « public » :

index.php(spip.php)
ecrire/inc_version.php
config/ecran_securite.php (sous condition*)
vendor/autoload.php
side effect @umask(0) ;
ecrire/inc/utils.php
side effect déclaration 2 globales
ecrire/base/connect_sql.php
ecrire/base/objets.php
config/mes_options.php (si existe)
call spip_initialisation_core()
config/chmod.php
ecrire/inc/flock.php
inc/nfslock (par défaut ecrire/inc/nsflock.php, surchargeable) sous condition
inc/acces (par défaut ecrire/inc/acces.php, surchargeable)
side effect déclaration 1 globale
call load_path_cache()
inc/cookie sous condition + call recuperer_cookies_spip()
tmp/cache/charger_plugins_options.php (si existe) OU call spip_initialisation_suite()+inc/plugin (par défaut ecrire/inc/plugin.php, surchargeable)+ call actualise_plugins_actifs()
call spip_initialisation_suite()
call init_var_mode()
inc/autoriser (par défaut ecrire/inc/autoriser.php, surchargeable) sous condiftion
call autoriser()
inc/autoriser
aiguilleur d’installation**
cas particulier memoriser un tri sessionne eventuel***
side effect envoie d’entêtes http
side effect spip_log****
ecrire/public.php
call recuperer_fond() OU
ecrire/inc_version.php sous condition ??
aiguillage fond/page/action
...

Site privé :

ecrire/index.php
ecrire/inc_version.php
config/ecran_securite.php (sous condition*)
vendor/autoload.php
side effect @umask(0) ;
ecrire/inc/utils.php
side effect déclaration 2 globales
ecrire/base/connect_sql.php
ecrire/base/objets.php
config/mes_options.php (si existe)
call spip_initialisation_core()
config/chmod.php
ecrire/inc/flock.php
inc/nfslock (par défaut ecrire/inc/nsflock.php, surchargeable) sous condition
inc/acces (par défaut ecrire/inc/acces.php, surchargeable)
side effect déclaration 1 globale
call load_path_cache()
inc/cookie sous condition + call recuperer_cookies_spip()
tmp/cache/charger_plugins_options.php (si existe) OU call spip_initialisation_suite()+inc/plugin (par défaut ecrire/inc/plugin.php, surchargeable)+ call actualise_plugins_actifs()
call spip_initialisation_suite()
call init_var_mode()
inc/autoriser (par défaut ecrire/inc/autoriser.php, surchargeable) sous condiftion
call autoriser()
inc/autoriser (par défaut ecrire/inc/autoriser.php, surchargeable)
aiguilleur d’installation**
cas particulier memoriser un tri sessionne eventuel***
envoie d’entêtes http
spip_log****
inc/cookie (par défaut ecrire/inc/cookie.php, surchargeable)
...