Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/HuasoFoundries/phpPgAdmin6.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'mk_linters.mk')
-rw-r--r--mk_linters.mk189
1 files changed, 189 insertions, 0 deletions
diff --git a/mk_linters.mk b/mk_linters.mk
new file mode 100644
index 00000000..3e9abfe0
--- /dev/null
+++ b/mk_linters.mk
@@ -0,0 +1,189 @@
+VERSION = $(shell cat composer.json | sed -n 's/.*"version": "\([^"]*\)"/\1/p')
+
+SHELL = /usr/bin/env bash
+
+HAS_PSALM := $(shell ls ./vendor/bin/xpsalm 2> /dev/null)
+XDSWI := $(shell command -v xd_swi 2> /dev/null)
+HAS_PHPMD := $(shell command -v phpmd 2> /dev/null)
+HAS_CSFIXER:= $(shell command -v php-cs-fixer 2> /dev/null)
+XDSWI_STATUS:=$(shell command xd_swi stat 2> /dev/null)
+HAS_PHIVE:=$(shell command phive --version 2> /dev/null)
+CURRENT_BRANCH:=$(shell command git rev-parse --abbrev-ref HEAD 2> /dev/null)
+DATENOW:=`date +'%Y-%m-%d'`
+YELLOW=\033[0;33m
+RED=\033[0;31m
+WHITE=\033[0m
+GREEN=\u001B[32m
+
+
+
+
+disable_xdebug:
+ @if [[ "$(XDSWI)" != "" ]]; then \
+ xd_swi off ;\
+ fi
+
+enable_xdebug:
+ @if [[ "$(XDSWI)" != "" ]]; then \
+ xd_swi $(new_status) ;\
+ fi
+
+abort_suggesting_composer:
+ @if [ "0" != "$(XDSWI_STATUS)" ]; then \
+ $(YELLOW)Warn: $(GREEN)xdebug$(WHITE) is enabled. Just saying... ;\
+ fi
+ @if [ ! -f "$(executable)" ]; then \
+ echo -e "$(GREEN)$(package_name)$(WHITE) $(RED)NOT FOUND$(WHITE) on $(CYAN)$(executable)$(WHITE). " ;\
+ echo -e "Install it with $(GREEN)composer require --dev $(package_name)$(WHITE)" ;\
+ echo ;\
+ exit 1 ;\
+ fi
+
+check_executable_or_exit_with_phive:
+ @if [ ! -f "$(executable)" ]; then \
+ echo -e "$(GREEN)$(package_name)$(WHITE) $(RED)NOT FOUND$(WHITE) on $(CYAN)$(executable)$(WHITE). " ;\
+ echo -e "Install it with $(GREEN)phive install $(package_name)$(WHITE)" ;\
+ echo ;\
+ exit 1 ;\
+ fi
+ @if [ "0" != "$(XDSWI_STATUS)" ]; then \
+ $(YELLOW)Warn: $(GREEN)xdebug$(WHITE) is enabled. Just saying... ;\
+ fi
+
+
+update_baselines:
+ @${MAKE} disable_xdebug --no-print-directory ;\
+ find .build/phpstan -mtime +5 -type f -name "*.php" -exec rm -rf {} \;
+ @vendor/bin/phpstan analyze --configuration phpstan.neon --generate-baseline ;\
+ find .build/psalm -mtime +5 -type f -exec rm -rf {} \;
+ @vendor/bin/psalm --config=psalm.xml --update-baseline --ignore-baseline --set-baseline=psalm-baseline.xml ;\
+ ${MAKE} enable_xdebug new_status=$(XDSWI_STATUS) --no-print-directory
+
+.PHONY:abort_suggesting_composer check_executable_or_exit_with_phive update_baselines
+
+phpmd: package_name:=phpmd
+phpmd: executable:= $(shell command -v phpmd 2> /dev/null)
+phpmd:
+ @${MAKE} check_executable_or_exit_with_phive executable=$(executable) package_name=$(package_name) --no-print-directory
+ @phpmd src text .phpmd.xml --exclude=src/help/*,src/translations/*
+
+phpmd_checkstyle:
+ @${MAKE} phpmd > temp/phpmd.report.json ;\
+ echo -e "$(GREEN)Finished PHPMD$(WHITE): waiting 1s"
+ @sleep 1 ;\
+ php tools/phpmd_checkstyle.php ;\
+ echo -e "$(GREEN)Formatted PHPMD$(WHITE): as checkStyle"
+ cat temp/phpmd.checkstyle.xml | vendor/bin/cs2pr
+
+csfixer: package_name:=friendsofphp/php-cs-fixer
+csfixer: executable:=vendor/bin/php-cs-fixer
+csfixer:
+ifeq (,$(reportformat))
+ $(eval reportformat='txt')
+endif
+ @${MAKE} abort_suggesting_composer executable=$(executable) package_name=$(package_name) --no-print-directory
+ @mkdir -p .build/phpcs && touch .build/phpcs/csfixer.cache ;\
+ vendor/bin/php-cs-fixer fix --config=.php_cs.php --cache-file=.build/phpcs/csfixer.cache --format=$(reportformat) $(dry_run) --diff
+
+csfixer_checkstyle:
+ @${MAKE} csfixer reportformat=checkstyle dry_run='--dry-run' --no-print-directory > temp/csfixer.checkstyle.xml ;\
+ cat temp/csfixer.checkstyle.xml | vendor/bin/cs2pr ;\
+ echo ""
+
+csfixer_dry:
+ @${MAKE} csfixer dry_run='--dry-run' --no-print-directory
+
+
+phpcs: package_name=phpcs
+phpcs: executable:= $(shell command -v phpcs 2> /dev/null)
+phpcs:
+ifeq (,$(reportformat))
+ $(eval reportformat='diff')
+endif
+ @${MAKE} check_executable_or_exit_with_phive executable=$(executable) package_name=$(package_name) --no-print-directory
+ @mkdir -p .build/phpcs && touch .build/phpcs/php-cs.cache ;\
+ phpcs --standard=.phpcs.xml --parallel=2 --cache=.build/phpcs/php-cs.cache --report=$(reportformat) src/*
+
+
+
+phpcs_checkstyle:
+ @${MAKE} phpcs reportformat=checkstyle --no-print-directory > temp/phpcs.checkstyle.xml ;\
+ echo -e "Finished $(GREEN)phpcs$(WHITE): waiting 1s"
+ @sleep 1 ;\
+ cat temp/phpcs.checkstyle.xml | vendor/bin/cs2pr
+
+
+psalm:
+ $(eval executable:=vendor/bin/psalm)
+ $(eval package_name:=vimeo/psalm)
+ @${MAKE} abort_suggesting_composer executable=$(executable) package_name=$(package_name) --no-print-directory
+ @mkdir -p .build/psalm ;\
+ echo -e "Running:" ;\
+ echo -e "$(GREEN)vendor/bin/psalm$(WHITE) --show-info=false --long-progress --threads=2 --config=psalm.xml "
+ @vendor/bin/psalm --show-info=false --long-progress --threads=2 --config=psalm.xml
+
+
+
+phpstan:
+ $(eval executable:=vendor/bin/phpstan)
+ $(eval package_name:=phpstan/phpstan)
+ @${MAKE} abort_suggesting_composer executable=$(executable) package_name=$(package_name) --no-print-directory
+ @mkdir -p .build/phpstan ;\
+ echo -e "Running:" ;\
+ echo -e "$(GREEN)vendor/bin/phpstan$(WHITE) analyse --memory-limit=2G --configuration phpstan.neon "
+
+ @vendor/bin/phpstan analyse --memory-limit=2G --configuration phpstan.neon
+
+phpstan_checkstyle:
+ @${MAKE} phpstan error-format=checkstyle > temp/phpstan.checkstyle.xml ;\
+ cat temp/phpstan.checkstyle.xml | vendor/bin/cs2pr ;\
+ echo ""
+
+lint:
+ $(eval executable:=vendor/bin/parallel-lint )
+ $(eval package_name:=php-parallel-lint/php-parallel-lint )
+ @${MAKE} abort_suggesting_composer executable=$(executable) package_name=$(package_name) --no-print-directory
+ mkdir -p .build/parallel ;\
+ $(executable) --ignore-fails --exclude vendor src
+
+
+fixers: dependency_analysis lint csfixer_dry psalm phpstan phpcs
+
+
+
+install_dev_deps:
+ @if [ "$(HAS_PHIVE)" == "" ]; then \
+ echo -e "$(GREEN)phive$(WHITE) is $(RED)NOT$(WHITE) installed. " ;\
+ echo -e "Visit $(GREEN)https://github.com/phar-io/phive$(WHITE) and follow install procedure" ;\
+ else \
+ phive install phpmd ;\
+ phive install phpcpd ;\
+ phive install phpcs ;\
+ phive install composer-unused ;\
+ phive install composer-require-checker ;\
+ curl -sfL https://raw.githubusercontent.com/reviewdog/reviewdog/master/install.sh | sh -s -- -b tools ;\
+ fi ;\
+ echo ""
+
+
+.PHONY: dependency_analysis
+dependency_analysis: vendor ## Runs a dependency analysis with maglnet/composer-require-checker
+ $(eval executable:=tools/composer-require-checker)
+ $(eval package_name:=composer-require-checker )
+ @${MAKE} check_executable_or_exit_with_phive executable=$(executable) package_name=$(package_name) --no-print-directory
+ @$(executable) check --config-file=$(shell pwd)/composer-require-checker.json
+ tools/composer-unused --excludePackage=adodb/adodb-php
+
+
+
+
+reviewdog:
+ $(eval executable:=tools/reviewdog)
+ $(eval package_name:=reviewdog )
+ @if [ ! -f "$(executable)" ]; then \
+ echo -e "$(GREEN)$(package_name)$(WHITE) $(RED)NOT FOUND$(WHITE) on $(CYAN)$(executable)$(WHITE). " ;\
+ echo -e "Install it with " ;\
+ echo -e "curl -sfL https://raw.githubusercontent.com/reviewdog/reviewdog/master/install.sh | sh -s -- -b tools " ;\
+ exit 1 ;\
+ fi
+ @tools/reviewdog -diff="git diff develop" \ No newline at end of file