powered by simpleCommunicator - 2.0.30     © 2024 Programmizd 02
Map
Форумы / Java [игнор отключен] [закрыт для гостей] / Как в Kotlin запустить все методы помеченные аннотацией?
12 сообщений из 12, страница 1 из 1
Как в Kotlin запустить все методы помеченные аннотацией?
    #39990609
private
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Допустим я делаю свой тестовый фреймворк, и хочу чтобы все статические функции помеченные аннотацией @Test
можно было вызвать когда нужно.

Есть 2 файла, в одном метод помеченный @Test в другом main() {}

Какой код нужно добавить в main() чтобы он нашел и вызвал все статические функции помеченные @Test по всему проекту?

(Я знаю про тест-юнит и т.п. у меня в реальности не тест нужно сделать, я просто как пример тест использую)

/projects/p1/src/some/thing.kt

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
package some

annotation class Test

@Test
private fun test_something() {
  println("tested")
}



/projects/p1/src/run.kt

Код: java
1.
2.
3.
4.
fun main() {
  Какой код должен быть тут чтобы по всему проекту 
  найти и запустить все методы помеченные @Test
}
...
Рейтинг: 0 / 0
Как в Kotlin запустить все методы помеченные аннотацией?
    #39990638
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну ... после компилляции у тебя в каталоге target/ или build/ лежат все classes.

Можешь из загрузить ClassLoader черезв Class.forName и через рефлексию
обойти все методы и те у которых будет тег @Test вызвать опять-же через
рефлексию.
...
Рейтинг: 0 / 0
Как в Kotlin запустить все методы помеченные аннотацией?
    #39990639
private
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Хмм, вобщем я так понял никто так не делает?

Я тогда просто лучше создам отдельный файл

all_test_methods.kt

Код: java
1.
2.
3.
fun main() {
  И здесь вручную пропишу вызовы все методы из всех классов, их не так много
}
...
Рейтинг: 0 / 0
Как в Kotlin запустить все методы помеченные аннотацией?
    #39990640
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
private

И здесь вручную пропишу вызовы все методы из всех классов, их не так много

Вот слабак.
...
Рейтинг: 0 / 0
Как в Kotlin запустить все методы помеченные аннотацией?
    #39990641
private
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Т.е.

Код: java
1.
2.
3.
4.
5.
fun main() {
  test_something()
  test_something2()
  ...
}



Охрененно удобно аспектное программирование в жаве сделано получается....
...
Рейтинг: 0 / 0
Как в Kotlin запустить все методы помеченные аннотацией?
    #39990668
mad_nazgul
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
private,

А где в Java/Kotlin декларировалось АОП?
Есть AOP фреймворки.
Например AspectJ.

А так AOP обычно ходят рядом с DI-фреймворками.

Ну если, хотите, можете написать свой DI-фреймворк. :-)
...
Рейтинг: 0 / 0
Как в Kotlin запустить все методы помеченные аннотацией?
    #39990680
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
По моему у автора - свое понимание аоп.
...
Рейтинг: 0 / 0
Как в Kotlin запустить все методы помеченные аннотацией?
    #39991195
private
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Автор использует свой генератор документации, который работает с любыми языками, и например кусочек документации для метода который считает аппроксимацию, из проекта на TypeScript



Кусочек кода для документации



Часть проекта будет сделана на Kotlin, и я хотел-бы иметь возможность документировать код на Kotlin, похожим образом, с картинками, формулами, форматированием. И чтобы он был обьединен в единой документации с другими модулями.

И для этого мне нужно найти все кусочки кода в проекте которые будут помечены @Doc, как бы это ни называлось в терминах Java AOP или еще как-то.
...
Рейтинг: 0 / 0
Как в Kotlin запустить все методы помеченные аннотацией?
    #39991207
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Не перекликается ли это с литературным кодом?

https://www.sql.ru/forum/1326829/subbotniy-literaturnyy-kod
...
Рейтинг: 0 / 0
Как в Kotlin запустить все методы помеченные аннотацией?
    #39991219
private
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Литературный код сложно сделать, у меня задача проще. Собрать из разных файлов и модулей проекта (он на нескольких языках) по кусочку комментарии и сгенерировать статическую документацию.

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

Код: java
1.
2.
3.
4.
5.
6.
7.
@Doc fun some_doc() { doc(
  tags  = list_of("Math", "Approximation"),
  title = "Inverse Distance Weigthing",
  text  = """
    Inverse Distance Weigthing is a deterministic ...
  """
) }
...
Рейтинг: 0 / 0
Как в Kotlin запустить все методы помеченные аннотацией?
    #39991229
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Тут мне кажется надо посмотреть в цели и смыслы. И какую цену ты готов заплатить за поддержку
такой документации. Может для твоего варианта цена будет слишком высока.

Тоесть нужно иметь очень много оснований чтобы отказаться от Javadoc, Doxia
и велосипедить свой собственный генератор доков.
...
Рейтинг: 0 / 0
Как в Kotlin запустить все методы помеченные аннотацией?
    #39991238
private
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Он уже сделан, он же не зависит от языка. На котлине мне нужно просто собрать кусочки помеченные @Doc по всему коду в список и сериализовать в JSON. Прийдется повозится с интроспекцией загрузчиками классов, надеюсь что хотя-бы maven не прйдется задействовать.

На TypeScript требуется 10 строчек для подключиения документации, ниже весь код который требуется, плюс еще одна строчка кода которая записывает содержимое переменной all_docs в файл как JSON (генератор документации уже забирает этот JSON и создает документацию).

Так что писать особо ничего не нужно.

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
interface TextDoc {
  tags?:  string[]
  title:  string
  text:   string
}
export interface TodoDoc {
  priority?: 'low' | 'normal' | 'high'
  tags?:     string[]
  todo:      string
}
type Doc = TextDoc | TodoDoc
const all_docs: Doc[] = []
function doc(...docs: (Doc | (() => Doc))[]) {
  all_docs.push(...(docs.map((d) => typeof d === 'function' ? d() : d)))
}
...
Рейтинг: 0 / 0
12 сообщений из 12, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / Как в Kotlin запустить все методы помеченные аннотацией?
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]