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

Premier commit.

parents
No related branches found
No related tags found
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