Главная - Литература

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 [231] 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294

са и поместить в него нужные элементы. Этот скелет станет «шаблоном», который вы сохраните в файле или назначите клавиатурному макросу При создании нового метода вы легко вставите шаблон в файл с исходным кодом. Шаблоны позволяют настроить как крупные сущности, скажем, классы и файлы, так и небольшие структуры вроде циклов.

При работе над групповым проектом шаблоны могут стать простым способом достижения согласованного стиля кодирования и документирования.

Средства создания перекрестных ссылок

Инструментарий по созданию перекрестных ссылок перечисляет (обычно на Web-страницах) переменные и методы и все места, где они применяются.

Генераторы иерархии классов

Генератор иерархии классов предоставляет сведения о деревьях наследования. Это бывает полезно при отладке, но чаще всего применяется для анализа структуры программы или для разбиения программы на модули, пакеты или подсистемы. Такая функциональность иногда реализована и в IDE.

Анализаторы качества кода

Инструментарий этой категории исследует статический исходный код с целью оценки его качества.

Программы углубленного контроля синтаксиса и семантики

Средства контроля синтаксиса и семантики осуществляют более тщательную проверку кода, чем это обычно делает компилятор. Ваш компилятор может проверять наличие только элементарных синтаксических ошибок. При углубленном контроле могут учитываться нюансы языка, что позволяет проверить наличие более коварных ошибок - тех, что не выглядят таковыми с точки зрения компилятора. Например, в С++ выражение:

while ( i = О ) ...

абсолютно законно, но обычно имеется в виду:

while ( i О ) ...

Первая строка синтаксически корректна, но путаница со знаками = и == является распространенной ошибкой, и данная строка, возможно, неправильна. Lint - углубленный анализатор синтаксиса и семантики, используемый во многих средах C/C++, - предупреждает о наличии неинициализированных переменных, переменных, которым присвоено значение, но которые никогда не используются, выходных параметрах метода, которым не было присвоено значение внутри метода, подозрительных операциях с указателями, подозрительных логических сравнениях (вроде приведенного выше), недостижимом коде и прочих распространенных проблемах. Другие языки предлагают похожие инструменты.



Генераторы отчетов о метриках

Некоторые инструменты составляют отчет о качестве кода, ({щщ шшл О штри Например, средства, сообщающие о сложности каждого ме- щ$й 28Л

тода, позволяют направить наиболее сложные функции на дополнительное рецензирование, тестирование или перепроектирование. Некоторые средства подсчитывают количество строк кода, объявлений данных, комментариев и пустых строк как для всей программы, так и для отдельных методов. Они отслеживают дефекты, внесенные конкретными программистами. Затем фиксируют изменения, сделанные для исправления дефектов, и программистов, внесших эти правки. Они подсчитывают количество модификаций ПО и выделяют процедуры, которые исправляются чаше всего. Установлено, что средства анализа сложности положительно влияют на производительность сопровождения, увеличивая ее примерно на 20% Qoies, 2000).

Рефакторинг исходного кода

Несколько инструментов оказывают помощь при конвертации исходного кода из одного формата в другой.

Инструменты для рефакторинга

Программа рефакторинга поддерживает процесс рефакто- перцрешай «шш» О рефак-ринга кода как в автономном режиме, так и с интеграцией щтщ ом. тщ 24. в IDE. Браузеры рефакторинга позволяют легко изменить имя

класса по всему исходному коду Они дают возможность создавать новый метод, просто выделив код, который в него нужно перенести, указав имя для этого нового метода и перечислив список параметров. Средства рефакторинга делают процесс изменения кода более быстрым и менее подверженным ошибкам. Они уже доступны для языков Java и Smalltalk и получают все большее распространение для других языков. Об инструментах рефакторинга см. также главу 14 «Refac-toring Tools» в книге «Refactoring» (Fowler, 1999).

Инструменты для реструктуризации

Программа реструктуризации преобразует тарелку спагетти-кода с операторами goto в более питательное блюдо из структурированного кода без goto. Кейперс Джонс сообщает, что в процессе сопровождения средства реструктуризации могут повысить производительность на 25-30% (Jones, 2000). Программе реструктуризации при конвертации кода приходится делать массу допущений, и, если логика оригинала была ужасной, она останется такой и в сконвертированной версии. Однако если вы выполняете преобразование вручную, вы можете использовать этот инструмент для простых вариантов, а сложные участки обработать вручную. В качестве альтернативы можно прогнать код через программу реструктуризации и использовать результат как отправную точку для ручного преобразования.

Трансляторы кода

Некоторые инструменты переводят код с одного языка программирования на другой. Транслятор позволяет перенести большой объем кода в другую среду Учтите



однако, что, если вы изначально имеете плохой код, транслятор просто переведет этот плохой код на другой язык.

Управление версиями

П шкая иытш О таких Справиться с быстро растущим количеством версий ПО по-йнструментах ш. подраздел зволяют инструменты управления версиями, которые пре-«йзменеш в mm программ- доставляют следующие возможности: адгоо6ш10че»ия» раздела Ш. управление исходным кодом;

управление зависимостями наподобие того, что делает утилита make в операционных системах UNIX;

управление версиями проектной документации;

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

Словари данных

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

30.3. Инструменты для работы с исполняемым кодом

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

Создание кода

Инструменты, описанные в этом разделе, оказывают помощь при создании программы.

Компиляторы и компоновщики

Компиляторы преобразуют исходный код в исполняемый. Большинство программ предназначено для компиляции, хотя еще встречается и интерпретируемый код.

Типичный компоновщик связывает один или несколько объектных файлов, которые компилятор сгенерировал из ваших исходников, со стандартным кодом, необходимым для создания исполняемых программ. Компоновщики, как правило, могут объединять файлы, созданные на разных языках, позволяя вам выбирать



0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 [231] 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294



0.0023