C'est une continuation de celle que j'ai écrite plus tôt (ou hier).
Cliquez ici pour l'article correspondant!
J'ai écrit un outil d'analyse de source Java en Java ... https://qiita.com/banana5388/items/cd8a549d1885aa6dd039
Dans le commentaire de l'article précédent, vous avez souligné que "commençons par quelque chose de simple", j'ai donc commencé par obtenir simplement le nombre d'étapes qui diffèrent entre les deux codes sources.
(Ne parlez pas de réaménagement des roues !!!!!!
Donc, l'entrée et la sortie de ce que je vais créer cette fois sont comme ça.
INPUT :Chemin absolu de la source de comparaison et de la destination de comparaison
OUTPUT:Nombre d'étapes avec un code différent
Ce à quoi je pensais pour le moment, c'est quelque chose comme ça.
Pour le moment, je l'ai implémenté tel quel.
La mise en œuvre de la partie principale ressemble à ceci.
JavaCodeDifference.java
/**
*Compare deux codes et renvoie le nombre de lignes correspondantes
*
* @param origCode Code source de comparaison (stocké dans une liste pour chaque ligne)
* @param destCode Code comparé (stocké dans une liste pour chaque ligne)
* @return Nombre de lignes correspondantes pour comparaison
*/
public static int countCodeDiff(List<String> origCode, List<String> destCode) {
int cnt = 0;
//Générer un itérateur pour les chaînes
//La méthode "getNotIncludeIgnoreCode" est basée sur les informations de code ligne par ligne stockées dans la liste.
//Effacez les espaces demi-largeur, les espaces pleine largeur, les caractères de tabulation et les caractères de saut de ligne, et ajoutez un caractère de saut de ligne à la fin.
//C'est une méthode qui renvoie finalement comme une chaîne de caractères (type String).
StringCharacterIterator origCodeIterator = new StringCharacterIterator(getNotIncludeIgnoreCode(origCode));
StringCharacterIterator destCodeIterator = new StringCharacterIterator(getNotIncludeIgnoreCode(destCode));
//Exécuter jusqu'à la fin de la source de comparaison ou du caractère de destination de la comparaison
while (origCodeIterator.current() != StringCharacterIterator.DONE &&
destCodeIterator.current() != StringCharacterIterator.DONE) {
//Augmente le nombre lorsque différents caractères de code sont inclus dans la source de comparaison et la destination de comparaison, et la destination de comparaison a d'abord un saut de ligne.
if (origCodeIterator.current() == destCodeIterator.current()) {
destCodeIterator.next();
origCodeIterator.next();
} else {
if (destCodeIterator.current() == '\n') {
cnt++;
}
destCodeIterator.next();
}
}
return cnt;
}
Euh, n'est-ce pas un bon sentiment? ??
J'ai préparé le texte pour le test.
test1.java
aaaa
iiii
uuuu
test2.java
aaaa
iiii
uuuu
Ce n'est pas du tout un fichier java, mais pour le moment, c'est à des fins de test, est-ce que ça va? Eh bien, la sortie est. .. ..
> Number of different lines: 0
Ouais, ça a l'air bien.
Un autre test
test1.java
aaaa
iiii
uuuu
test2.java
aaa
iii
uuu
Eh bien, la sortie est. .. ..
> Difference Code Line Count:3
Cela a l'air bien aussi.
Pour le moment, je suis satisfait car il évolue selon les spécifications.
Au contraire, les spécifications sont assez lâches ... Je voudrais le réimplémenter afin qu'il puisse être utilisé.
Oui. https://github.com/satodaiki/DiffTool
2018/12/2 Première édition 2018/12/3 Il y avait une erreur dans la source, donc je l'ai corrigée.
Recommended Posts