Как найти синтаксические признаки из фрагмента кода в текстовом файле?

1

У меня есть фрагменты кода в текстовом файле и вы должны выяснить, какие функции (например, есть ли getter/mutator в строке) связаны с указанной строкой в фрагменте кода. Например, в данном фрагменте кода

1 public HTMLEditor() {
2  //install the source configuration
3  setSourceViewerConfiguration(new HTMLConfiguration());
4  //install the document provider
5  setDocumentProvider(new HTMLDocumentProvider()); }
6 protected void createActions() {
7  super.createActions();
8 //... add other editor actions here
9 }}

Строка 2,4 и 8 содержит комментарий, и я могу проверить это просто, написав следующий исходный код. Пусть говорят

public boolean containsComment(String line) {
    // if line contains comment
    if(line.contains("//")){
        return true;            
    }else{
        return false;
    }
}

Точно так же я должен проверить многие такие функции, написав такие методы, как containsMutator(string line){//some code here what is it я don't know}

Некоторые основные функции:

  1. Есть ли мутатор в строке (метод сеттера)
  2. Метод доступа (метод getter)
  3. Включает ли строка метод
  4. содержит исключение или нет (оба варианта try catch и extends)
  5. Содержит массив
  6. Содержит вызов отражения
  7. Содержит анонимный класс
  8. Вызов на Java SDK и т.д.

Строка может содержать более одной функции, например, строка 5 в вышеприведенном фрагменте имеет метод набора и новое ключевое слово. Кроме того, слова, такие как new или get или etc, должны быть проверены только в исходном коде, а не в части комментариев. Точно так же бывает много таких случаев; То же, что и my containsComment который легче проверять другие функции, такие как проверка исключений, проверка новых или других ключевых слов, немного сложнее и требует сложного кода для обработки.

Каков наилучший способ проверить такие функции? Должен ли я использовать регулярное выражение или любым другим способом?

ПРИМЕЧАНИЕ. Я решил большинство функций выше с помощью line.contains(). Пожалуйста, кто-нибудь может помочь мне в этом, т.е. I) Содержит вызов отражения,

ii) Содержит анонимный класс

ObjectInterestedInFooObjects() {
   result = someLookup.lookupResult(Foo.class);
    result.addLookupListener(this);
     resultChanged(null);
 }

iii) как проверить, направляется ли метод или класс, и вызывается вызов Java SDK.

  • 0
    Вы ищете общее решение, которое будет работать с любым кодом Java, компилируемым или другим? Я не знаю ни одного IDE (или плагина IDE), который помогает автоматизировать этот процесс для всего файла или набора файлов.
Теги:
string
contains

1 ответ

1

Для некоторых из line.contains() будет работать подход с line.contains().

Но как вы, например, определяете, что что-то есть метод setter? Только подписи метода? Если нет, вам нужно будет проанализировать соответствующую реализацию (которую вы больше не будете иметь в большинстве случаев).

Итак, вы хотите сказать, что "это может быть сеттер", тогда вы можете играть с contains() и регулярным выражением. Если вы хотите сказать "это сеттер", вам понадобится намного больше; начиная с чистой концепции того, что составляет специальную языковую функцию.

  • 0
    Вы имеете в виду line.contains(".set") если строка во фрагменте выглядит примерно так: INSTANCE.setDelegates(new XMLFileSystem(
  • 1
    Это будет работать большую часть времени, но также будет ловить такие вещи, как this.setup() . Моим намерением было побудить вас задуматься о том, чего вы действительно хотите достичь и насколько точным должен быть ваш результат. Если вы не возражаете против того, чтобы строка setup () была помечена как setter, то у вас все в порядке
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню