Используя символы ESC внутри grep

Stmts относится к числу операторов в вашем коде.

Miss относится к числу операторов, которые не были выполнены.

Cover - тестовое покрытие, или (Stmts - Miss) / 100.

Missing содержит номера строк операторов Miss.

Если охват не равен 100%, это означает, что есть части вашего кода, которые не охватываются вашими тестами, например:

def f(a, b):
    if a > 0:
        return a

    elif a == 0:
        return 0

    else:
        return b

def test_f():
    assert f(10, 10)

Приведенный выше тест будет входить только в ветку a > 0 и поэтому будет иметь тестовое покрытие 33%.

Высокое покрытие не всегда хорошо (потому что простое покрытие кода не означает, что все случаи проверены адекватно), но низкое покрытие часто плохо (потому что это означает, что ваши тесты даже не затрагивают части вашего кода). [1115 ]

9
задан Steven Penny 20 December 2013 в 21:28
поделиться

3 ответа

Может кто-либо из последовательностей ниже происходит в Вашем входе?

\\>
\\\>
\\\\>
\blank
\tab
\newline
...

Если так, как Вы предлагаете рассматривать их?

В противном случае затем нулевая ширина оглядывается, утверждения добьются цели, при условии, что Ваш механизм регулярного выражения поддерживает ее. Это будет иметь место в любом механизме, который поддерживает регулярные выражения стиля Perl (включая Perl, PHP, и т.д.):

 (?<!\\)[ \n\t<>]

Вышеупомянутое будет соответствовать любому незавершенному пространству, новой строке, вкладке или повернутым фигурным скобкам. Более в общем (использование \s обозначить любые пробелы, включая \r):

 (?<!\\)\s

С другой стороны, использование дополнительной нотации без потребности в нулевой ширине оглядывается утверждение (но возможно менее эффективно):

 (?:[^ \n\t<>]|\\[<>])

Можно также использовать изменение последнего для обработки \\>, \\\>, \\\\> и т.д. случаи также некоторое конечное число предыдущих обратных косых черт, такие как:

 (?:[^ \n\t<>]|(?:^|[^<>])[\\]{1,3,5,7,9}[<>])
4
ответ дан 3 November 2019 в 08:21
поделиться

Согласно grep странице справочника:

Выражение скобки является списком символов, включенных [и]. Это соответствует любому отдельному символу в том списке; если первый символ списка является каре ^ затем, это соответствует любому символу не в списке.

Это означает, что Вы не можете соответствовать последовательности символов такой как \<или \> только отдельные символы.

Если у Вас нет версии grep, созданного с Perl regex поддержка затем, можно использовать lookarounds как один из других упомянутых плакатов. Не все версии grep имеют эту поддержку все же.

0
ответ дан 3 November 2019 в 08:21
поделиться

Возможно, можно использовать egrep и поместить строку образца в кавычках. Это должно стереть потребность в выходе.

-1
ответ дан 3 November 2019 в 08:21
поделиться
Другие вопросы по тегам:

Похожие вопросы: