Skip to content
Snippets Groups Projects
Commit 1e1b368a authored by Bertrand Gauthier's avatar Bertrand Gauthier
Browse files

Premier commit.

parents
Branches detached
Tags 0.9.0
No related merge requests found
vendor
\ No newline at end of file
.idea/
.DS_Store
vendor/
.~*
\ No newline at end of file
<?php
/**
* Config PHAN pour les modules unicaen/*.
*/
/**
* This configuration will be read and overlaid on top of the
* default configuration. Command line arguments will be applied
* after this file is read.
*/
return [
// Supported values: `'5.6'`, `'7.0'`, `'7.1'`, `'7.2'`, `'7.3'`, `null`.
// If this is set to `null`,
// then Phan assumes the PHP version which is closest to the minor version
// of the php executable used to execute Phan.
//
// Note that the **only** effect of choosing `'5.6'` is to infer that functions removed in php 7.0 exist.
// (See `backward_compatibility_checks` for additional options)
// TODO: Set this.
'target_php_version' => null,
// Backwards Compatibility Checking. This is very slow
// and expensive, but you should consider running
// it before upgrading your version of PHP from 5.x to 7.0,
// due to the backward compatibility breaks of parsing in PHP 7.0
'backward_compatibility_checks' => true,
// Added in 0.10.0. Set this to false to emit
// PhanUndeclaredFunction issues for internal functions
// that Phan has signatures for,
// but aren't available in the codebase or the
// internal functions used to run phan
'ignore_undeclared_functions_with_known_signatures' => false,
// If empty, no filter against issues types will be applied.
// If this white-list is non-empty, only issues within the list
// will be emitted by Phan.
'whitelist_issue_types' => [
'PhanDeprecatedFunctionInternal', // Warns about a few functions deprecated in 7.0 and later.
'PhanUndeclaredFunction', // Check for removed functions such as split() that were deprecated in php 5.x and removed in php 7.0.
'PhanCompatibleExpressionPHP7',
'PhanCompatibleKeyedArrayAssignPHP70',
'PhanCompatibleNullableTypePHP70',
'PhanCompatiblePHP7', // This only checks for **syntax** where the parsing may have changed. This check is enabled by `backward_compatibility_checks`
'PhanCompatibleShortArrayAssignPHP70',
'PhanCompatibleUseIterablePHP71',
'PhanCompatibleUseObjectPHP71',
'PhanCompatibleUseObjectPHP71',
'PhanCompatibleUseVoidPHP70',
'PhanCompatibleVoidTypePHP70',
// 'PhanDeprecatedClass',
// 'PhanDeprecatedFunction',
// 'PhanDeprecatedInterface',
// 'PhanDeprecatedTrait',
// 'PhanParamSignatureMismatch',
// 'PhanParamSignatureRealMismatchHasParamType',
// 'PhanParamSignatureRealMismatchParamType',
'PhanParamSignatureRealMismatchTooFewParameters',
'PhanParamSignatureRealMismatchTooFewParametersInternal',
'PhanParamTooFew',
// 'PhanParamTooMany',
// 'PhanParamTooManyInternal',
// 'PhanSyntaxError',
// 'PhanTypeMismatchArgument',
// 'PhanTypeMismatchArgumentInternal',
// 'PhanTypeMismatchDeclaredParam',
// 'PhanTypeMismatchDeclaredParamNullable',
// 'PhanTypeMismatchDefault',
// 'PhanTypeMismatchForeach',
// 'PhanTypeMismatchProperty',
// 'PhanTypeMismatchReturn',
// 'PhanTypeMissingReturn',
// 'PhanUndeclaredClassInstanceof',
// 'PhanUnreferencedUseNormal',
'PhanContinueTargetingSwitch', // This detects code causing a warning in PHP 7.3.
],
// A list of directories that should be parsed for class and
// method information. After excluding the directories
// defined in exclude_analysis_directory_list, the remaining
// files will be statically analyzed for errors.
//
// Thus, both first-party and third-party code being used by
// your application should be included in this list.
'directory_list' => [
'vendor',
'vendor/unicaen',
],
// A directory list that defines files that will be excluded
// from static analysis, but whose class and method
// information should be included.
//
// Generally, you'll want to include the directories for
// third-party code (such as "vendor/") in this list.
//
// n.b.: If you'd like to parse but not analyze 3rd
// party code, directories containing that code
// should be added to both the `directory_list`
// and `exclude_analysis_directory_list` arrays.
'exclude_analysis_directory_list' => [
'vendor/bin',
'vendor/composer',
'vendor/container-interop',
'vendor/dealerdirect',
'vendor/doctrine',
'vendor/easybook',
'vendor/felixfbecker',
'vendor/jasig',
'vendor/microsoft',
'vendor/mpdf',
'vendor/myclabs',
'vendor/netresearch',
'vendor/paragonie',
'vendor/phan',
'vendor/phpcompatibility',
'vendor/phpdocumentor',
'vendor/phpspec',
'vendor/phpunit',
'vendor/psr',
'vendor/ramsey',
'vendor/sabre',
'vendor/sebastian',
'vendor/setasign',
'vendor/slevomat',
'vendor/squizlabs',
'vendor/symfony',
'vendor/true',
// 'vendor/unicaen',
'vendor/webmozart',
'vendor/zendframework',
'vendor/zf-commons',
'vendor/unicaen/code/code/template',
'vendor/unicaen/bjy-authorize/tests',
],
];
<?php
/**
*
* Config PHAN pour ...
*
*/
/**
* This configuration will be read and overlaid on top of the
* default configuration. Command line arguments will be applied
* after this file is read.
*/
return [
// Supported values: `'5.6'`, `'7.0'`, `'7.1'`, `'7.2'`, `'7.3'`, `null`.
// If this is set to `null`,
// then Phan assumes the PHP version which is closest to the minor version
// of the php executable used to execute Phan.
//
// Note that the **only** effect of choosing `'5.6'` is to infer that functions removed in php 7.0 exist.
// (See `backward_compatibility_checks` for additional options)
// TODO: Set this.
'target_php_version' => null,
// Backwards Compatibility Checking. This is very slow
// and expensive, but you should consider running
// it before upgrading your version of PHP from 5.x to 7.0,
// due to the backward compatibility breaks of parsing in PHP 7.0
'backward_compatibility_checks' => true,
// Added in 0.10.0. Set this to false to emit
// PhanUndeclaredFunction issues for internal functions
// that Phan has signatures for,
// but aren't available in the codebase or the
// internal functions used to run phan
'ignore_undeclared_functions_with_known_signatures' => false,
// If empty, no filter against issues types will be applied.
// If this white-list is non-empty, only issues within the list
// will be emitted by Phan.
'whitelist_issue_types' => [
'PhanDeprecatedFunctionInternal', // Warns about a few functions deprecated in 7.0 and later.
'PhanUndeclaredFunction', // Check for removed functions such as split() that were deprecated in php 5.x and removed in php 7.0.
'PhanCompatibleExpressionPHP7',
'PhanCompatibleKeyedArrayAssignPHP70',
'PhanCompatibleNullableTypePHP70',
'PhanCompatiblePHP7', // This only checks for **syntax** where the parsing may have changed. This check is enabled by `backward_compatibility_checks`
'PhanCompatibleShortArrayAssignPHP70',
'PhanCompatibleUseIterablePHP71',
'PhanCompatibleUseObjectPHP71',
'PhanCompatibleUseObjectPHP71',
'PhanCompatibleUseVoidPHP70',
'PhanCompatibleVoidTypePHP70',
// 'PhanDeprecatedClass',
// 'PhanDeprecatedFunction',
// 'PhanDeprecatedInterface',
// 'PhanDeprecatedTrait',
'PhanParamSignatureMismatch',
// 'PhanParamSignatureRealMismatchHasParamType',
// 'PhanParamSignatureRealMismatchParamType',
'PhanParamSignatureRealMismatchTooFewParameters',
'PhanParamSignatureRealMismatchTooFewParametersInternal',
'PhanParamTooFew',
// 'PhanParamTooMany',
// 'PhanParamTooManyInternal',
// 'PhanSyntaxError',
// 'PhanTypeMismatchArgument',
// 'PhanTypeMismatchArgumentInternal',
// 'PhanTypeMismatchDeclaredParam',
// 'PhanTypeMismatchDeclaredParamNullable',
// 'PhanTypeMismatchDefault',
// 'PhanTypeMismatchForeach',
// 'PhanTypeMismatchProperty',
// 'PhanTypeMismatchReturn',
// 'PhanTypeMissingReturn',
// 'PhanUndeclaredClassInstanceof',
// 'PhanUnreferencedUseNormal',
'PhanContinueTargetingSwitch', // This detects code causing a warning in PHP 7.3.
],
// A list of directories that should be parsed for class and
// method information. After excluding the directories
// defined in exclude_analysis_directory_list, the remaining
// files will be statically analyzed for errors.
//
// Thus, both first-party and third-party code being used by
// your application should be included in this list.
'directory_list' => [
'vendor',
'vendor/doctrine',
'vendor/zendframework',
'vendor/zf-commons',
],
// A directory list that defines files that will be excluded
// from static analysis, but whose class and method
// information should be included.
//
// Generally, you'll want to include the directories for
// third-party code (such as "vendor/") in this list.
//
// n.b.: If you'd like to parse but not analyze 3rd
// party code, directories containing that code
// should be added to both the `directory_list`
// and `exclude_analysis_directory_list` arrays.
'exclude_analysis_directory_list' => [
'vendor/bin',
'vendor/composer',
'vendor/container-interop',
'vendor/dealerdirect',
// 'vendor/doctrine',
'vendor/easybook',
'vendor/felixfbecker',
'vendor/jasig',
'vendor/microsoft',
'vendor/mpdf',
'vendor/myclabs',
'vendor/netresearch',
'vendor/paragonie',
'vendor/phan',
'vendor/phpcompatibility',
'vendor/phpdocumentor',
'vendor/phpspec',
'vendor/phpunit',
'vendor/psr',
'vendor/ramsey',
'vendor/sabre',
'vendor/sebastian',
'vendor/setasign',
'vendor/slevomat',
'vendor/squizlabs',
'vendor/symfony',
'vendor/true',
'vendor/unicaen',
'vendor/webmozart',
// 'vendor/zendframework',
// 'vendor/zf-commons',
],
];
ARG PHP_VERSION
FROM unicaen-dev-php${PHP_VERSION}-apache
LABEL maintainer="Bertrand GAUTHIER <bertrand.gauthier at unicaen.fr>"
WORKDIR /app
ADD .. /app
ARG PHP_VERSION
RUN echo "PHP_VERSION=${PHP_VERSION}"
ENV APACHE_CONF_DIR=/etc/apache2
ENV PHP_CONF_DIR=/etc/php/${PHP_VERSION}
### Installation de packages requis.
#RUN apt-get install -y \
# sqlite3 \
# php${PHP_VERSION}-pdo-sqlite
RUN pecl install ast && \
echo "extension=ast.so" > ${PHP_CONF_DIR}/cli/conf.d/ast.ini
# Nettoyage
RUN apt-get autoremove -y && apt-get clean && rm -rf /tmp/* /var/tmp/*
## Symlink apache access and error logs to stdout/stderr so Docker logs shows them
#RUN ln -sf /dev/stdout /var/log/apache2/access.log
#RUN ln -sf /dev/stdout /var/log/apache2/other_vhosts_access.log
#RUN ln -sf /dev/stderr /var/log/apache2/error.log
#
## Configuration Apache et FPM
#ADD docker/apache-ports.conf ${APACHE_CONF_DIR}/ports.conf
#ADD docker/apache-site.conf ${APACHE_CONF_DIR}/sites-available/webapp.conf
#ADD docker/apache-site-ssl.conf ${APACHE_CONF_DIR}/sites-available/webapp-ssl.conf
#ADD docker/fpm/pool.d/app.conf ${PHP_CONF_DIR}/fpm/pool.d/webapp.conf
#ADD docker/fpm/conf.d/app.ini ${PHP_CONF_DIR}/fpm/conf.d/app.ini
#
#RUN a2ensite webapp webapp-ssl && \
# service php${PHP_VERSION}-fpm reload
# check-compat
Tester la compatibilité des bibliothèques `unicaen/*` avec une version précise de PHP.
## PHP 7.0
```bash
docker run \
--rm \
-v ${PWD}:/app \
--workdir /app \
unicaen-dev-php7.0-apache \
./bin/check-compat.sh 7.0
```
## PHP 7.1
```bash
docker run \
--rm \
-v ${PWD}:/app \
--workdir /app \
unicaen-dev-php7.0-apache \
./bin/check-compat.sh 7.1
```
## PHP 7.2
```bash
docker run \
--rm \
-v ${PWD}:/app \
--workdir /app \
unicaen-dev-php7.0-apache \
./bin/check-compat.sh 7.2
```
## PHP 7.3
```bash
docker run \
--rm \
-v ${PWD}:/app \
--workdir /app \
unicaen-dev-php7.0-apache \
./bin/check-compat.sh 7.3
```
#!/usr/bin/env bash
[[ -z $1 ]] && echo "Veuillez spécifier les versions de PHP désirées (ex: 7.1 7.2 7.3)." && exit 1
DIR=$(cd `dirname $0` && pwd)
DIRNAME=$(basename ${DIR})
cd ${DIR}/..
versions=$1
phpcs="./vendor/bin/phpcs"
libdir="./vendor/unicaen"
outdir="./${DIRNAME}/reports"
mkdir -p ${outdir} #&& rm -rf ${outdir}/*
for path in ${libdir}/*
do
dirname=$(basename -- "$path")
for ver in "$1"
do
reportpath="${outdir}/compat-unicaen-${dirname}-${ver}.txt"
echo "Processing '${path}' against PHP version ${ver}"
echo "=> reporting into '${reportpath}'"
${phpcs} \
-p \
--standard=PHPCompatibility \
--runtime-set testVersion ${ver} \
--report-full=${reportpath} \
${path}
done
done
#!/usr/bin/env bash
DIR=$(cd `dirname $0` && pwd)
cd ${DIR}/..
# Build des images
v=7.0 ; docker build --rm -t skeleton-app-${v} -f Dockerfile-${v} .
v=7.0 ; docker rm -f skeleton-app-${v}-container
v=7.0 ; docker run -d -p 8070:80 -p 8470:443 -v ${PWD}/composer.json:/app/composer.json -v ${PWD}/.phan:/app/.phan --name skeleton-app-${v}-container skeleton-app-${v}
v=7.0 ; docker exec skeleton-app-${v}-container composer update --no-suggest --optimize-autoloader
v=7.1 ; docker build --rm -t skeleton-app-${v} -f Dockerfile-${v} .
v=7.1 ; docker rm -f skeleton-app-${v}-container
v=7.1 ; docker run -d -p 8071:80 -p 8471:443 -v ${PWD}/composer.json:/app/composer.json -v ${PWD}/.phan:/app/.phan --name skeleton-app-${v}-container skeleton-app-7.1
v=7.1 ; docker exec skeleton-app-${v}-container composer update --no-suggest --optimize-autoloader
v=7.2 ; docker build --rm -t skeleton-app-${v} -f Dockerfile-${v} .
v=7.2 ; docker rm -f skeleton-app-${v}-container
v=7.2 ; docker run -d -p 8072:80 -p 8472:443 -v ${PWD}/composer.json:/app/composer.json -v ${PWD}/.phan:/app/.phan --name skeleton-app-${v}-container skeleton-app-${v}
v=7.2 ; docker exec skeleton-app-${v}-container composer update --no-suggest --optimize-autoloader
v=7.3 ; docker build --rm -t skeleton-app-${v} -f Dockerfile-${v} .
v=7.3 ; docker rm -f skeleton-app-${v}-container
v=7.3 ; docker run -d -p 8073:80 -p 8473:443 -v ${PWD}/composer.json:/app/composer.json -v ${PWD}/.phan:/app/.phan --name skeleton-app-${v}-container skeleton-app-${v}
v=7.3 ; docker exec skeleton-app-${v}-container composer update --no-suggest --optimize-autoloader
# PHAN
## analyse des modules unicaen/* :
v=7.0 ; docker exec skeleton-app-${v}-container vendor/bin/phan --config-file .phan/config-unicaen.php --target-php-version ${v} > /tmp/phan-unicaen-${v}.log
v=7.1 ; docker exec skeleton-app-${v}-container vendor/bin/phan --config-file .phan/config-unicaen.php --target-php-version ${v} > /tmp/phan-unicaen-${v}.log
v=7.2 ; docker exec skeleton-app-${v}-container vendor/bin/phan --config-file .phan/config-unicaen.php --target-php-version ${v} > /tmp/phan-unicaen-${v}.log
v=7.3 ; docker exec skeleton-app-${v}-container vendor/bin/phan --config-file .phan/config-unicaen.php --target-php-version ${v} > /tmp/phan-unicaen-${v}.log
## analyse des vendors :
v=7.0 ; docker exec skeleton-app-${v}-container vendor/bin/phan --config-file .phan/config-vendor.php --target-php-version ${v} > /tmp/phan-vendor-${v}.log
v=7.1 ; docker exec skeleton-app-${v}-container vendor/bin/phan --config-file .phan/config-vendor.php --target-php-version ${v} > /tmp/phan-vendor-${v}.log
v=7.2 ; docker exec skeleton-app-${v}-container vendor/bin/phan --config-file .phan/config-vendor.php --target-php-version ${v} > /tmp/phan-vendor-${v}.log
v=7.3 ; docker exec skeleton-app-${v}-container vendor/bin/phan --config-file .phan/config-vendor.php --target-php-version ${v} > /tmp/phan-vendor-${v}.log
# PHPCompatibility
v=7.0 ; docker exec skeleton-app-${v}-container bin/phpcs.sh ${v}
v=7.1 ; docker exec skeleton-app-${v}-container bin/phpcs.sh ${v}
v=7.2 ; docker exec skeleton-app-${v}-container bin/phpcs.sh ${v}
v=7.3 ; docker exec skeleton-app-${v}-container bin/phpcs.sh ${v}
#!/usr/bin/env bash
[[ -z $1 ]] && echo "Veuillez spécifier la version de PHP désirée (ex: 7.1)." && exit 1
DIR=$(cd `dirname $0` && pwd)
DIRNAME=$(basename ${DIR})
cd ${DIR}/..
version=$1
# conversion de la version spécifiée au format PHP_VERSION_ID, ex: "7.2" devien "70200"
a=(${version//./ })
PHP_VERSION_ID=$((a[0]*10000+a[1]*100+a[2]))
phpcs="./vendor/bin/phpcs"
libdir="./vendor/unicaen"
reportpath="/tmp/unicaen-${version}.log"
echo "" > ${reportpath}
for path in ${libdir}/*
do
dirname=$(basename -- "$path")
echo "Processing '${path}' against PHP version ${version} (PHP_VERSION_ID=${PHP_VERSION_ID})"
${phpcs} \
-p \
--standard=PHPCompatibility \
--runtime-set php_version ${PHP_VERSION_ID} \
--report-full ${reportpath} \
${path}
done
echo "Done. See '${reportpath}'."
{
"name": "unicaen/php-compat",
"description": "Outils de test de compatibilité PHP",
"repositories": [
{
"type": "composer",
"url": "https://gest.unicaen.fr/packagist"
}
],
"require": {
},
"require-dev": {
"squizlabs/php_codesniffer": "3.*",
"dealerdirect/phpcodesniffer-composer-installer": "^0.4",
"slevomat/coding-standard": "^4.0",
"phpcompatibility/php-compatibility": "*",
"phan/phan": "^1.2"
},
"scripts": {
},
"autoload": {
"psr-4": {
"Application\\": "module/Application/src"
},
"files": [
"module/Application/Module.php"
]
},
"autoload-dev": {
"psr-4": {
"ApplicationTest\\": "module/Application/test"
}
}
}
version: '2'
services:
unicaen-php-compat-7.0:
image: unicaen-php-compat-7.0
build:
dockerfile: Dockerfile
args:
PHP_VERSION: 7.0
context: .
container_name: unicaen-php-compat-7.0-container
ports:
- "8070:80"
- "8470:443"
volumes:
- ${PWD}/composer.json:/app/composer.json
- ${PWD}/.phan:/app/.phan
working_dir: /app
unicaen-php-compat-7.1:
image: unicaen-php-compat-7.1
build:
dockerfile: Dockerfile
args:
PHP_VERSION: 7.1
context: .
container_name: unicaen-php-compat-7.1-container
ports:
- "8071:80"
- "8471:443"
volumes:
- ${PWD}/composer.json:/app/composer.json
- ${PWD}/.phan:/app/.phan
working_dir: /app
unicaen-php-compat-7.2:
image: unicaen-php-compat-7.2
build:
dockerfile: Dockerfile
args:
PHP_VERSION: 7.2
context: .
container_name: unicaen-php-compat-7.2-container
ports:
- "8072:80"
- "8472:443"
volumes:
- ${PWD}/../unicaen-skeleton-application:/app/unicaen-skeleton-application
- ${PWD}/composer.json:/app/composer.json
- ${PWD}/.phan:/app/.phan
working_dir: /app
unicaen-php-compat-7.3:
image: unicaen-php-compat-7.3
build:
dockerfile: Dockerfile
args:
PHP_VERSION: 7.3
context: .
container_name: unicaen-php-compat-7.3-container
ports:
- "8073:80"
- "8473:443"
volumes:
- ${PWD}/composer.json:/app/composer.json
- ${PWD}/.phan:/app/.phan
working_dir: /app
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment