2010-09-05 4 views
1

Что такое плагины для vim/gvim, которые могут сообщать о некорректном форматировании кода C++ и кода PLSQL. Нравится:Инструмент для автоматического форматирования или предоставления ошибки в VIM

  1. пустое место после строки.
  2. линия, имеющая характер более 80 (как «матч»).
  3. void foo(int x,int y); после этого сообщит забыли пробел после ,
  4. И еще много ошибок форматирования, как указано выше.

Есть ли какая-либо стандартная практика для сообщения о форматировании кода перед проверкой на CVS?

+0

За регистрацию CVS (мои соболезнования) вы можете открыть другой вопрос. Чтобы получить четкий ответ, постарайтесь сосредоточиться на одиночной проблеме за раз. Постскриптум И поскольку теги для CVS отсутствуют, вы не будете получать много внимания от людей, которые могут наблюдать за тегами. – Dummy00001

+0

@Dummy: - Спасибо. Я открою новый вопрос для проверки CVS. –

ответ

4

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

highlight ImproperSyntax ctermbg=red guibg=red 
au BufWinEnter * syn match ImproperSyntax /\s\+$\| \+\ze\t/ "Spaces at the end of lines or BEFORE tabs 
au Filetype cpp,c syn keyword ImproperSyntax dynamic_cast "disallowed keyword 
au Filetype cpp,c syn match ImproperSyntax /[^\n]\%$/ display "Last line should be blank 
au Filetype cpp,c syn match ImproperSyntax /\t/ display "No tabs! 
au Filetype cpp,c syn match ImproperSyntax /,\S/ display "comma always has a space 
au Filetype cpp,c syn match ImproperSyntax /\%80v.*$/ "Highlight any characters passed column 80 

дополнительный прием, который можно использовать, чтобы включить все эти в функцию (или список/словарь), а также отображать их как ошибку либо на строках статуса (мое предпочтение), или к пользователю как ошибка.

Что касается проверки в CVS ... Я не уверен в CVS, но SVN и hg (и, по-видимому, большинство других систем контроля версий) могут быть проинструктированы выполнить серию «предварительных фиксаций», прежде чем разрешить вам совершать. Один из них может быть легко запрограммирован для сканирования такого же поведения (возможно, с каким-то символом переопределения).

+0

Проект встроенного программирования, в основном выполненный в стиле «C с классами» - стиль C++. Если вы видите dynamic_cast в кодовой базе, кто-то не понимает, что делают броски. (наш код усеян неуместным reinterpret_cast, который у меня на менее суровом цвет подсветки). Я бы предпочел еще несколько доступных функций языка, куча была бы приятной, например. – jkerian

+0

Я бы ** много ** больше беспокоился о людях, использующих 'reinterpret_cast', чем' dynamic_cast' (поскольку это более вероятно, чтобы выделить недоразумение приведения C++). Если я когда-либо хотел предотвратить использование 'dynamic_cast', я бы просто отключил RTTI в моих параметрах компилятора. Но это * путь * вне темы для этого ответа! – Johnsyweb

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