У меня есть фрагменты кода в текстовом файле и вы должны выяснить, какие функции (например, есть ли 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}
Некоторые основные функции:
Строка может содержать более одной функции, например, строка 5 в вышеприведенном фрагменте имеет метод набора и новое ключевое слово. Кроме того, слова, такие как new или get или etc, должны быть проверены только в исходном коде, а не в части комментариев. Точно так же бывает много таких случаев; То же, что и my containsComment
который легче проверять другие функции, такие как проверка исключений, проверка новых или других ключевых слов, немного сложнее и требует сложного кода для обработки.
Каков наилучший способ проверить такие функции? Должен ли я использовать регулярное выражение или любым другим способом?
ПРИМЕЧАНИЕ. Я решил большинство функций выше с помощью line.contains()
. Пожалуйста, кто-нибудь может помочь мне в этом, т.е. I) Содержит вызов отражения,
ii) Содержит анонимный класс
ObjectInterestedInFooObjects() {
result = someLookup.lookupResult(Foo.class);
result.addLookupListener(this);
resultChanged(null);
}
iii) как проверить, направляется ли метод или класс, и вызывается вызов Java SDK.
Для некоторых из line.contains()
будет работать подход с line.contains()
.
Но как вы, например, определяете, что что-то есть метод setter? Только подписи метода? Если нет, вам нужно будет проанализировать соответствующую реализацию (которую вы больше не будете иметь в большинстве случаев).
Итак, вы хотите сказать, что "это может быть сеттер", тогда вы можете играть с contains()
и регулярным выражением. Если вы хотите сказать "это сеттер", вам понадобится намного больше; начиная с чистой концепции того, что составляет специальную языковую функцию.
line.contains(".set")
если строка во фрагменте выглядит примерно так: INSTANCE.setDelegates(new XMLFileSystem(
this.setup()
. Моим намерением было побудить вас задуматься о том, чего вы действительно хотите достичь и насколько точным должен быть ваш результат. Если вы не возражаете против того, чтобы строка setup () была помечена как setter, то у вас все в порядке