Если вы хотите рассуждать об исходном коде после того, как аспекты были вплетены в код, вам следует вплетать аспекты в исходный код, а не в двоичный код.
Многие разработчики аспектов выполняют вплетение двоичного кода, потому что у них нет доступа к информации (таблице символов, именам, типам, типам выражений и т. д.), создаваемой внешним интерфейсом компилятора. Итак, хак заключается в том, чтобы использовать код виртуальной машины, созданный компилятором (этот трюк в основном работает только для наборов инструкций VM, таких как коды классов .net IL и java), который часто легко декодировать (хороший, обычный набор инструкций), украшенный информация таблицы символов.
Но если вы не можете рассуждать о двоичных результатах такого процесса плетения, то вы не можете быть уверены, что тканая программа не содержит ошибок, в чем заключается смысл исходного вопроса ОП: «Как мне запустить инструменты SCA? на (эффективном) тканом источнике?».
Вы можете исправить это двумя способами:
- Попросите сообщество написать инструменты SCA, которые обрабатывают байт-коды, а не исходный код. Это может быть сложно, поскольку исходный код может содержать информацию, потерянную в процессе компиляции.
- Идея получше: попросите сообщество аспектов написать программы для создания аспектов, которые работают с исходным кодом и создают исходный код. Это может быть сложно, потому что сложно получить полноценный языковой интерфейс.
Я не могу помочь вам заставить сообщество сделать выбор.
Я могу настоятельно рекомендовать помочь сообществу выбрать второй путь: наш DMS Software Reengineering Toolkit< /а>. Это система преобразования программ, которая выполняет директивы в форме «если вы видите это, замените это на это», но с соблюдением синтаксиса и семантики языка. фактически применяя такие изменения к структурам данных компилятора, созданным полным интерфейсом языка. (Это версия эквациональной замены в математике для инженеров-программистов). Измененные структуры данных могут быть повторно экспортированы в виде компилируемого исходного текста с комментариями.
Если вы понимаете, что вообще могут делать преобразования, вы можете увидеть, что аспектные ткачи — это особый случай. систем преобразования программ. Таким образом, с помощью DMS легко реализовать ткачи аспектов, а результаты представляют собой исходный код, что означает, что вы можете применять инструменты анализа исходного кода.
Я сомневаюсь, что это на самом деле решает проблему ОП анализа сгенерированного Roo кода в краткосрочной перспективе :-{
person
Ira Baxter
schedule
23.02.2010