如何在程序源代码中进行探索

A star forming region in the sky

我将介绍自己探索和修改程序源代码的方法。

页面语言切换

开放源代码的好处

在我还是学生的时候,开放源代码这个词就被广泛使用了。

甚至在此之前,基于 BSD 的 un*x 和 GNU 产品的源代码就已向公众发布,但直到 30 年前 Linux 开始广泛使用,许可证才得以确定,源代码才得以更积极地发布。

不用说,开放源代码的优势在于任何人都可以看到源代码。如果对程序的运行有疑问,而源代码又是公开的,那么就可以对原因进行调查,只要稍加了解,就可以纠正错误。

我昨晚发表的文章(或者说,日期已经更改)只能修改,因为源代码是公开的。

就我个人而言,与封闭源代码软件相比,我更喜欢开放源代码软件。

如何探索源代码

从这个案例研究中,我将介绍我是如何探索源代码的,以及我的方法。

关键词选择

首先,要寻找关键词。

这一次,网站上的口头禅区块出了问题。

源代码几乎都有英文注释;如果把 WordPress 管理界面转为英文,查看相关区块的英文说明,就会发现它是 “网站标语”。

在日语中是 “口头禅”,但在英语中是 “标语”。

现在你知道你要找的关键词是 “标语 “了。

此外,在谷歌上搜索 “网站标语 “时发现,您可以从 bloginfo(‘description’) 中获取标语。

在关键字中添加 “bloginfo “和 “description”。

递归搜索(grep -r)

确定关键字后,在源代码的所有文件中查找包含关键字的文件。

通过 ssh 进入租用服务器,在安装 WordPress 的目录下运行 grep 命令。

Bash
grep -r 'tagline'
grep -r 'bloginfo'
grep -r 'description'
Bash

-r “选项会递归搜索每个文件。

运行 grep 命令将显示包含每个关键词的文件名和相应的行。

这样就能大致知道哪些文件受到了影响:将 grep 命令的结果导入 less(pager),然后搜索其他关键字。

Bash
grep -r 'tagline' | less
Bash

就 WordPress 而言,主题和插件位于 wp-content 目录中,而 WordPress 本身则位于 wp-includes 目录中。你可以在 block 目录中找到相关文件,猜测它们就在 block 目录中。

结果,我们找到了 wp-includes/blocks/site-tagline.php 文件。

修复和运行检查

确定相关文件后,先进行备份。

Bash
cp site-tagline.php site-tagline.php.orig
Bash

这将使您能够撤销任何问题。

在编辑器中打开 site-tagline.php(这次用 vim),用 “bloginfo “或 “description “搜索相关行。

PHP
function render_block_core_site_tagline( $attributes ) {
        $site_tagline = get_bloginfo( 'description' );
        if ( ! $site_tagline ) {
               return;
        }
site-tagline.php

我发现我是通过 get_bloginfo(‘description’)来获取标语的,因此我将其改为通过 bloginfo(‘description’) 来获取。对 bloginfo(‘description’) 做了以下修改。

由于无法检查缓存是否仍然存在,请清除 LiteSpeed Cache 插件的缓存,并清除内联 CSS 和内联 JS。然后加载页面并检查运行情况。

在这种情况下,这种修改确保了网站标语的多语种性,以匹配页面的地域性。

至此,校正工作完成。

Musubi

我已经介绍了我通常是如何探索和修改源代码的。

我并没有做什么特别的事情。但是,从头开始理解所有源代码非常耗时,需要付出大量努力才能找到原因所在。

通过将调查重点放在关键点上,可以大大减少处理情况所需的工作量。

这需要一定的经验,但反复练习会减少修改源代码的障碍。

这次我用这种方法解决了问题,但原本最好是在 functions.php 中解决,而不是修改源代码;PHP 似乎不允许函数重定义,但我会寻找一种解决方法。

Comments

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注