grep — Как найти php-файлы с кодом вне функции или класса и не содержит строки?

Я хочу найти php-файлы с кодом вне функции — в основном игнорировать файлы библиотек и классов.

Затем проверьте, вызывают ли эти файлы функцию — это функция безопасности, которая называется require_login ()

Это возможно?

0

Решение

Поиск файлов, которые имеют код вне классов и функций, нетривиален.

Вместо:

  • Я ищу любые файлы, которые определяют классы, интерфейсы или функции и исключают их и возвращают все несоответствующие файлы.
  • Затем ищите что-нибудь в этом списке, который является файлом php.
  • Затем ищем что-нибудь, вызывающее require_login.

grep -rEL "^\ *(function|([Aa]bstract |[Ff]inal )?class|[Ii]nterface)" \
| grep ".php$" \
| xargs grep -L require_login

1

Другие решения

Конечно, напишите синтаксический анализатор PHP, чтобы вы могли легко понять, что находится «вне» функции.

Как бы вы справились с чем-то вроде этого:

sillyprint.php:

<?php
print($global);

main_library.php:

function foo() {
$global = "Hello, world";
include('sillyprint.php');
}

Будет ли код «sillyprint» быть «вне» функции? Это только когда-либо выполняется, когда ВНУТРИ функции …

0

По вопросам рекламы [email protected]