2013-07-10 2 views
1

У меня есть фрагмент кода INT TC какпоиск шаблона с cppcheck (PCRE) регулярное выражение

val = (val1 << 8) | (val >> 8); 
val = (val2 << 16) | (val >> 8); 
val = (val3 << 32) | (val >> 8); 
val = (val << 8); 

я получить выводе, если я Grep в grep -nhE "(<<.*|).*(>>)" t.c

1:val = (val1 << 8) | (val >> 8); 
2:val = (val2 << 16) | (val >> 8); 
3:val = (val3 << 32) | (val >> 8); 

Но если поиск с cppcheck как ./cppcheck --rule="(<<.*|).*(>>)" t.c я получить выход

[../test/t.c:1]: (style) found ' val = (val1 << 8) | (val >> 8) ; val = (val2 << 16) | (val >> 8) ; val = (val3 << 32) | (val >>' 

т.е. целых согласующих линий порознь r из первого совпадения. Я хочу результат как в команде grep.

Пожалуйста, помогите

+0

Ваше правило слишком сложно. из-за оператора чередования '' 'вы эффективны только для поиска' >> '. , объединяющий более простое выражение с vs-совместимым выходом, используйте './cppcheck --template = vs --rule =" >> "t.c'. вы можете определить свой собственный шаблон для форматирования вывода, см. [глава 5 руководства] (http://cppcheck.sourceforge.net/manual.pdf). – collapsar

ответ

0

Try следующей команды (сбежавшей |):

cppcheck --rule="<<.*?\|.*?>>" t.c 

выход не точно так же, как и Grep.

Смежные вопросы