Confusables-Homoglyphs : une lib pour gérer les caractères qui se ressemblent

a marqué ce sujet comme résolu.

Salut les agrumes !

Je viens ici vous présenter une nouvelle bibliothèque Java (en fait compatible avec n’importe quel langage qui utilise la JVM, normalement) : confusable-homoglyphs.

Quel est donc le but de cette bibliothèque ?

Les humains utilisent divers systèmes d’écriture, et ce qui devait arriver, arriva : il y a des caractères qui se ressemblent (voire qui sont graphiquement identiques, selon la police d’écriture) mais qui sont différents.

Comme je le décrivais dans ce tuto, ça peut avoir des conséquences fâcheuses :

  • L’utilisateur ΑlaskaJazz (le premier Α est un alpha majuscule grec) peut se faire passer pour l’utilisateur AlaskaJazz (uniquement des lettres latines)
  • On peut vous inciter à vous connecter sur www.microsоft.com ou www.faϲebook.com au lieu de www.microsoft.com ou www.facebook.com

Unicode fournit des listes de caractères qui prêtent à confusion, mais difficilement utilisables en l’état parce que c’est des fichiers textes, qui plus est hébergés sur un serveur à la stabilité et à l’accès très relatifs.

Cette bibliothèque permet de gérer ces cas en détectant et donnant des informations sur les caractères qui présentent des risques de confusion.

C’est en réalité une réimplémentation en Java du projet d’origine en Python, par @cepus.

À propos du projet

Les intentions de votre renard préféré

En réalité je n’ai pas besoin de cette lib, au-delà du fait que je trouve qu’elle manque à Java. Je voulais aussi et surtout :

  • Connaitre la difficulté à porter une lib de Python à Java
  • Voir ce que c’est de créer un projet, seul, de A à Z et complet (avec documentation et tout)
  • Essayer de déployer quelque chose sur Maven (en tant que fournisseur)

Les contraintes

  • Licence libre (Apache)
  • Java 8, pour garder une bonne compatibilité avec les projets actuels et les différents langages qui utilisent la JVM
  • Une API aussi proche de possible que l’originale
  • Disponible sur Maven Central, pour être utilisable comme n’importe quelle lib Java
  • Avec une doc complète
  • Avec une couverture de tests correcte
  • Avec de l’intégration continue

Ce que j’ai appris du projet

Il y aura un billet complet et dédié à ce sujet. Ce qu’on peut en retenir en bref, c’est que le code c’est que 20 % du projet, que Java gère Unicode de façon assez étrange, et que l’écosystème Java (pousser un truc sur Maven Central) est une vraie catastrophe ergonomique (et GPG n’y est pas pour rien).

Alors, ce projet ?

On le trouve sur Maven Central. Le développement est basé sur Github.

Ça s’utilise ainsi :

Déclaration de la dépendance (Maven ou Gradle) :

<dependency>
    <groupId>fr.spacefox</groupId>
    <artifactId>confusable-homoglyphs</artifactId>
    <version>1.0.1</version>
</dependency>
compile group: 'fr.spacefox', name: 'confusable-homoglyphs', version: '1.0.1'

On initialise une classe :

Categories categories = Categories.fromInternal();
Confusables confusables = Confusables.fromInternal();
// ou
Categories categories = Categories.fromJson("/full/path/to/categories.json");
Confusables confusables = fromJsons("/full/path/to/categories.json", "/full/path/to/confusables.json");
// (Confusables utilise Categories en interne).

Et on utilise les objets créés. Cette création est relativement longue par rapport à l’utilisation, il vaut mieux garder ces objets vivants entre deux appels.

Et maintenant ?

N’hésitez pas à utiliser cette bibliothèque, à créer des tickets voire des pull request, ou encore à me demander pourquoi tel ou tel choix.

Il y aura un jour une nouvelle version (v2 pour cause de semver) qui modifiera certaines API en s’éloignant de l’original.

À vous les studios !

Connectez-vous pour pouvoir poster un message.
Connexion

Pas encore membre ?

Créez un compte en une minute pour profiter pleinement de toutes les fonctionnalités de Zeste de Savoir. Ici, tout est gratuit et sans publicité.
Créer un compte