Если вы хотите объяснить исходный код после того, как аспекты были вплетены в код, вы должны сплести аспекты в исходный код, а не в двоичный код.
Многие ткачицы имеют двоичный код, потому что у них нет доступа к информации (таблица символов, имена, типы, типы выражений, ...), создаваемые передним коннектором компилятора. Итак, взломать, используйте код виртуальной машины, созданный компилятором (этот трюк в основном работает только для наборов команд VM, таких как коды .net IL и java), которые часто легко декодировать (красивый, регулярный набор команд), украшенный информация о таблице символов.
Но если вы не можете рассуждать о бинарных результатах такого процесса ткачества, то вы не можете быть уверены, что сплетенная программа не является ошибкой, что является точкой исходного вопроса OP: «Как сделать Я запускаю инструменты SCA на (эффективном) тканом источнике? ».
Вы можете исправить это двумя способами:
- Получить сообщество писать инструменты SCA, которые обрабатывают байт-коды, а не источник. Это может быть сложно, потому что исходный код может содержать информацию, потерянную в процессе компиляции.
- Лучшая идея: Получите сообщество аспект, чтобы писать аспектные ткачи, которые работают с исходным кодом и создают исходный код. Это может быть сложно, потому что получение полных языковых интерфейсов затруднено.
Я не могу помочь вам сделать выбор сообщества.
Я могу предложить сильное поощрение, чтобы помочь сообществу выбрать второй способ: наш DMS Software Reengineering Toolkit. Это система преобразования программ, которая выполняет директивы формы «если вы видите это, замените ее на , что», но соблюдая синтаксис и семантику языка, применяя такие изменения к структурам данных компилятора, с помощью полноязычных интерфейсов. (Это программная версия эквациональной замены в математике). Измененные структуры данных могут быть реэкспортированы как компилируемый исходный текст с комментариями.
Если вы понимаете, что могут сделать преобразования вообще, вы можете увидеть это aspect weavers are a special case of program transformation systems. Таким образом, легко использовать для реализации аспектных ткачей с использованием DMS, а результаты - это исходный код, то есть вы можете применить инструменты анализа исходного кода.
Я сомневаюсь, что это на самом деле решает проблему OPS анализа Роо сгенерированный код в краткосрочной перспективе: - {
Я искал это время, а также поговорил с продавцом инструментов для инструментов SCA. Похоже, что это все еще проблема ниши :-( – er4z0r
Мы также используем Roo и Sonar, поэтому мне интересно увидеть ответы на этот вопрос ... –
Ах, чувствую себя хорошо, чтобы не быть единственным. проблемы, о которых я говорю? – er4z0r