геррит пролог отправить проверку правил - PullRequest
0 голосов
/ 31 августа 2018

Мы используем Gerrit 2.11, чтобы добавить метку одобрения менеджера, если введенный код превышает определенный порог. пролог rules.pl, как показано ниже.

Я могу удалить «Менеджер-одобрение», используя строку 7 и строку комментария 8; но если прокомментирована строка 7 и активная строка 8, «утверждение менеджера» всегда там.

Если я собираюсь использовать следующую строку для замены строки 8, там также есть утверждение менеджера, означает ли это, что commit_stats() всегда возвращает true, и строка 8 не будет запускать вызов remove_verified()?

Мы новички в прологе, Любой ад будет с благодарностью.

remove_verified ([метка ('утверждение менеджера', _) | T], R): - вставлено = 10, вставлено> 5, remove_verified (T, R),!.

submit_rule(S) :-
       gerrit:default_submit(X),
       X =.. [submit | Ls],
       remove_verified(Ls, R),
       S =.. [submit | R].

remove_verified([], []).
%remove_verified([label('Manager-Approval', _) | T], R) :- remove_verified(T, R), !.
remove_verified([label('Manager-Approval', _) | T], R) :- gerrit:commit_stats(_, inserted, _), inserted > 5, remove_verified(T, R), !.
remove_verified([H|T], [H|R]) :- remove_verified(T, R).

1 Ответ

0 голосов
/ 31 августа 2018

для дальнейшего использования. Следующие правила отправки работают хорошо.

  • В Прологе переменная должна начинаться с заглавной буквы *

submit_rule(S) :-
       gerrit:default_submit(X),
       X =.. [submit | Ls],
       remove_verified(Ls, R),
       S =.. [submit | R].

remove_verified([], []).
%remove_verified([label('Manager-Approval', _) | T], R) :- remove_verified(T, R), !.
remove_verified([label('Manager-Approval', _) | T], R) :- gerrit:commit_stats(_, Inserted, _), Inserted > 5, remove_verified(T, R), !.
remove_verified([H|T], [H|R]) :- remove_verified(T, R).
...