miceliroos/typo3scan

TYPO3 扫描器

资助包维护!
Patreon

安装次数: 216,861

依赖者: 24

建议者: 0

安全: 0

星标: 94

关注者: 11

分支: 17

开放问题: 10

类型:项目

1.7.7 2023-02-25 14:34 UTC

README

扫描代码以检测已弃用或更改的代码。

那么,自动修复这些损坏的代码呢?

TYPO3scan 仅 报告 在迁移到更高版本的 TYPO3 时需要修复的代码。如果您想要一个可以 自动为您修复代码 的工具,请查看 TYPO3 Rector 项目

它有什么作用?

demo

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
  • 值: 789101112
  • 默认: 12
php ./typo3scan.phar scan --target 8 ~/tmp/source

仅显示特定类型的更改

您可以通过筛选特定更改类型(破坏、弃用、特性、重要)来过滤掉特定更改类型。

  • 长选项: --only
  • 短选项: -o
  • 值: breakingdeprecationfeatureimportant
  • 默认: breaking,deprecation,feature,important
php ./typo3scan.phar scan --only breaking ~/tmp/source

php ./typo3scan.phar scan --only breaking,deprecation ~/tmp/source

仅显示特定指示器类型(强/弱)

您可以通过筛选特定指示器类型(强、弱)来过滤掉特定指示器类型。

  • 长选项: --indicators
  • 短选项: -i
  • 值: strongweak
  • 默认: strong,weak
php ./typo3scan.phar scan --indicators weak ~/tmp/source

php ./typo3scan.phar scan --indicators strong ~/tmp/source

更改输出格式

您可以选择不同的输出格式。

  • 长选项: --format
  • 短选项: -f
  • 值: htmljunitmarkdownplain
  • 默认值: 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的慷慨赞助。