Какие-либо инструменты для ловли глупых ошибок в коде C?

Решение оказалось простым. Несмотря на то, что я прочитал документацию несколько раз, читать ее утром после ответа Назктера, вероятно, было то, что мне было нужно, спасибо!

Оказывается, что:

{% get_language_info_list for LANGUAGES as languages %}

не нужно. Более простая версия:

{% get_current_language as LANGUAGE_CODE %}
{% get_available_languages as LANGUAGES %}
{% for CODE, NAME in LANGUAGES %}

  <a href="/{{ CODE }}{{ request.get_full_path|slice:'6:' }}"
     class="mx-3 {% if CODE == LANGUAGE_CODE %}selected{% endif %}"
     lang="{{ CODE }}">{{ NAME }}</a>
{% endfor %}

Обратите внимание, что это работает только для полных кодов языка, например, en-us, как мы используем slice:'6'.

11
задан Srikanth 15 October 2008 в 18:43
поделиться

9 ответов

Да, Линт ПК является, вероятно, лучшим доступным инструментом.

15
ответ дан 3 December 2019 в 02:12
поделиться

Я запустил бы путем приобретения знаний о шплинте и gdb. Если Вы нуждаетесь более усовершенствованный, основываетесь на этих двух инструментах. Но они - хорошее начало.

3
ответ дан 3 December 2019 в 02:12
поделиться

В дополнение к предложению Линта ПК Lykathea можно также поправиться (или по крайней мере больше) диагностика при увеличении уровня предупреждения компилятора. Что-то как /W4 или -Wall

Хотя я не уверен, была ли Ваша конкретная проблема бы поймана с этим (MS, VC, кажется, не отмечает его даже с помощью всех включенных предупреждений). Я думаю поэтому, что это не редкая идиома для for циклы, чтобы быть пустым, когда работа сделана как побочные эффекты выражений управления циклом.

7
ответ дан 3 December 2019 в 02:12
поделиться

Несколько вещей, которые сохранили меня в прошлом от вершины моей головы:

  • Используйте, если (3 == bla), а не (bla == 3), потому что, если Вы пишете c орфографическими ошибками и вводите (3 = bla) компилятор будет жаловаться.

  • Используйте переключатель все-предупреждений. Ваш компилятор должен предупредить Вас о пустых операторах как этот.

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

  • Не пытайтесь обойти любые гарантии, которые компилятор или ОС поместили на месте. Они там для Вашей простоты программирования также.

4
ответ дан 3 December 2019 в 02:12
поделиться

GCC имеет большую часть функциональности, которую Линт имел созданный на пути флаги предупреждения.

2
ответ дан 3 December 2019 в 02:12
поделиться

Любая хорошая среда программирования GUI ("IDE" - Интегрированная среда разработки) как Eclipse генерировала бы предупреждение в случае как этот.

0
ответ дан 3 December 2019 в 02:12
поделиться

В этой (старой) версии того, Как Выстрелить себе В Ногу, и во многие другие версии вокруг сети, C всегда является языком, который допускает самую простую процедуру. При программировании в C необходимо помнить это и быть осторожными. Если Вы хотите защиту, выбираете другой язык.

Это высказывание приписывается Bjarne Stroustrup (C++) самому. К (mis) кавычка:

"C помогает выстрелить себе в ногу"

-1
ответ дан 3 December 2019 в 02:12
поделиться

Хороший маркер синтаксиса сделает некоторые случаи как это более видимыми.

0
ответ дан 3 December 2019 в 02:12
поделиться

Я бы предложил посмотреть, есть ли у вас возможность обеспечить соблюдение стандартов MISRA. Они были написаны с большой продуманностью и содержат много правил, которые компилятор может легко проверить. Например, правило, которое я использую, требует, чтобы все команды NOP имели свою собственную строку. Это означает, что если вы поставите ; в конце оператора цикла, он выдаст ошибку, говоря, что команда не находится на своей собственной строке.

0
ответ дан 3 December 2019 в 02:12
поделиться
Другие вопросы по тегам:

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