miceliroos / typo3scan
TYPO3 扫描器
Requires
- php: ^7.0 || ^8.0
README
扫描代码以检测已弃用或更改的代码。
那么,自动修复这些损坏的代码呢?
TYPO3scan 仅 报告 在迁移到更高版本的 TYPO3 时需要修复的代码。如果您想要一个可以 自动为您修复代码 的工具,请查看 TYPO3 Rector 项目。
它有什么作用?
TYPO3 从版本 7 开始发布破坏性更改和弃用信息。
此工具扫描文件夹中的任何损坏或已弃用的代码。它是围绕从 TYPO3 v9 核心提取的 TYPO3 扫描库 的包装。您可以扫描 v7 及以上版本的弃用和破坏性更改。
TYPO3 扫描器是否帮助您更顺利地迁移您的 TYPO3 网站?
那么请考虑赞助,这样我可以使这个工具更加出色!
谢谢!♥
要求
扫描器需要 PHP 7.0 或更高版本才能运行。为什么? 因为这个工具是在 2018 年编写的! 仍在运行 PHP 5.6 的旧网站?将您的扩展移动到具有 PHP 7.0+ 的系统上以便扫描。
如果需求足够,我可以降低扫描器组件的版本,使其也能在 PHP 5.6 上运行。这也意味着需要调整 TYPO3 扫描库。它来自在编写时需要 PHP 7.2 的 TYPO3 9 核心。这对我来说听起来相当麻烦,所以如果您想运行 TYPO3 的 LTS 版本,那么升级您的 PHP 版本是一种更好的做法。
安装
安装到现有的 composer 项目中
composer require "michielroos/typo3scan"
用法
扫描路径
指定要扫描的路径。
php ./typo3scan.phar scan ~/tmp/source
扫描特定 TYPO3 版本的更改
默认情况下,扫描器扫描最新版本的 TYPO3 中的破坏性更改和弃用。在编写时,这是版本 10
。
- 长选项:
--target
- 短选项:
-t
- 值:
7
、8
、9
、10
、11
和12
- 默认:
12
php ./typo3scan.phar scan --target 8 ~/tmp/source
仅显示特定类型的更改
您可以通过筛选特定更改类型(破坏、弃用、特性、重要)来过滤掉特定更改类型。
- 长选项:
--only
- 短选项:
-o
- 值:
breaking
、deprecation
、feature
、important
- 默认:
breaking,deprecation,feature,important
php ./typo3scan.phar scan --only breaking ~/tmp/source php ./typo3scan.phar scan --only breaking,deprecation ~/tmp/source
仅显示特定指示器类型(强/弱)
您可以通过筛选特定指示器类型(强、弱)来过滤掉特定指示器类型。
- 长选项:
--indicators
- 短选项:
-i
- 值:
strong
、weak
- 默认:
strong,weak
php ./typo3scan.phar scan --indicators weak ~/tmp/source php ./typo3scan.phar scan --indicators strong ~/tmp/source
更改输出格式
您可以选择不同的输出格式。
- 长选项:
--format
- 短选项:
-f
- 值:
html
、junit
、markdown
、plain
- 默认值:
plain
php ./typo3scan.phar scan --format markdown ~/tmp/source
指定报告文件名
而不是将输出管道传输到文件中,typo3scanner可以直接写入报告文件
- 长选项:
--reportFile
- 短选项:
-r
php ./typo3scan.phar scan -r ~/tmp/report.txt ~/tmp/source
指定自定义模板文件夹
通过指定自定义模板路径,您可以输出您选择的任何格式。
- 长选项:
--templatePath
扫描器会查找名为Format.twig
的文件。所以如果您创建了一个HTML模板并存储在~/path/to/templates/Html.twig
中,那么您可以使用以下命令生成HTML报告:
php ./typo3scan.phar scan --format html --templatePath ~/path/to/templates ~/tmp/source
如果您想以Restructured Text格式输出报告,您会创建一个Rst.twig
模板,并使用以下命令生成rest:
php ./typo3scan.phar scan --format rst --templatePath ~/path/to/templates ~/tmp/source
将输出捕获到文件中
您可以将输出重定向到文件
php ./typo3scan.phar scan --format markdown ~/tmp/source > source.md
遍历扩展名列表
如果您有一系列要扫描的扩展名键,您可以进行如下操作:
for e in `cat ~/extensions.txt`; do php ./typo3scan.phar scan --format markdown ~/tmp/ext/$e > ~/tmp/reports/$e.md; done
在Gitlab CI中运行TYPO3scan工具
检查web/typo3conf/ext/
文件夹中的多个扩展,如果需要,请调整该路径。
结果是包含一个Build/Report/Deprecations
的工件,其中每个扩展和TYPO3版本7、8、9和10都有一个文件。
这样您可以轻松地审查每个扩展。
有了计划的JUnit输出,它还可以很好地集成到Gitlab合并请求小部件中。
checkDeprecations:
image: docker.kay-strobach.de/docker/php:7.1
stage: test
variables:
SCANNER_RELEASE: "https://github.com/Tuurlijk/typo3scan/releases/download/1.3.0/typo3scan.phar"
script:
- curl -L $SCANNER_RELEASE --output typo3scan.phar
- php ./typo3scan.phar
- mkdir -p Build/Report/Deprecations
- for d in web/typo3conf/ext/*/ ; do (php ./typo3scan.phar scan --target 7 --format markdown $d > Build/Report/Deprecations/v7-$(basename $d).md); done
- for d in web/typo3conf/ext/*/ ; do (php ./typo3scan.phar scan --target 8 --format markdown $d > Build/Report/Deprecations/v8-$(basename $d).md); done
- for d in web/typo3conf/ext/*/ ; do (php ./typo3scan.phar scan --target 9 --format markdown $d > Build/Report/Deprecations/v9-$(basename $d).md); done
- for d in web/typo3conf/ext/*/ ; do (php ./typo3scan.phar scan --target 10 --format markdown $d > Build/Report/Deprecations/v10-$(basename $d).md); done
artifacts:
when: on_success
expire_in: 7 days
paths:
- Build
示例输出
您可以在Resources/Private/Templates文件夹中找到示例模板。
纯文本
纯文本输出的一个部分
typo3scan.phar scan ~/tmp/source/powermail
看起来像这样
powermail
Found 26 matches in 1.09s when checking for changes and deprecations in TYPO3 7
strong weak DEPRECATION BREAKING
29.41% 70.59% 5.88% 94.12%
Classes/Finisher/SendParametersFinisher.php
Call to method "isEnabled()" (weak)
60 if ($this->isEnabled()) {
Deprecation: #37171 - Deprecate t3editor->isEnabled()
https://docs.typo3.org/typo3cms/extensions/core/Changelog/7.3/Deprecation-67171-T3editorIsEnabled.html
Configuration/TCA/tx_powermail_domain_model_answer.php
Usage of array key "dividers2tabs" (strong)
14 'dividers2tabs' => true,
Breaking: #62833 - Removed dividers2tabs functionality
https://docs.typo3.org/typo3cms/extensions/core/Changelog/7.0/Breaking-62833-Dividers2Tabs.html
Usage of array key "canNotCollapse" (weak)
240 'canNotCollapse' => 1
Breaking: #67753 - Drop "Show secondary options"
https://docs.typo3.org/typo3cms/extensions/core/Changelog/7.4/Breaking-67753-DropSecondaryOptions.html
Usage of array key "_PADDING" (weak)
206 '_PADDING' => 2,
Breaking: #63846 - FormEngine refactoring
https://docs.typo3.org/typo3cms/extensions/core/Changelog/7.3/Breaking-63846-FormEngineRefactoring.html
ext_localconf.php
Access to array key "formevals" (weak)
71 $TYPO3_CONF_VARS['SC_OPTIONS']['tce']['formevals']['\In2code\Powermail\Tca\EvaluateEmail'] =
Breaking: #67749 - Force class auto loading for various hooks
https://docs.typo3.org/typo3cms/extensions/core/Changelog/7.4/Breaking-67749-ForceAutoloadingForVariousHooks.html
HTML
HTML输出的一个部分
typo3scan.phar scan ~/tmp/source/coreapi -f html -t 7
看起来像这样
Junit
Junit输出的一个部分
typo3scan.phar scan ~/tmp/source/coreapi -f junit -t 7
看起来像这样
贡献
如果您想帮助改进这个工具以减少误报数量,改进匹配器,添加新匹配器等,您的贡献非常受欢迎!
您可以通过以下方式贡献:TYPO3scan源存储库
赞助商
这个项目得到了Stichting Praktijkleren的慷慨赞助。