IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Actualités Discussion :

Facebook rend RacerD open source

  1. #1
    Chroniqueur Actualités
    Avatar de Patrick Ruiz
    Homme Profil pro
    Redacteur web
    Inscrit en
    février 2017
    Messages
    1 671
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Redacteur web
    Secteur : Communication - Médias

    Informations forums :
    Inscription : février 2017
    Messages : 1 671
    Points : 47 698
    Points
    47 698
    Par défaut Facebook rend RacerD open source
    Facebook rend RacerD open source
    L’outil de débogage en programmation concurrente prend Java en charge, C++ à venir

    Avec l’augmentation du nombre de processeurs/cœurs au sein des plateformes matérielles, il va de soi que les développeurs sont de plus en plus confrontés à la mise sur pied d’applications capables de tirer parti de ces architectures et donc d’effectuer plusieurs tâches en parallèle. D’avis d’experts, la tâche est ardue surtout lorsqu’il s’agit de dénicher des bogues. Fort heureusement, à l’ère de l’open source, il suffit d’un atterrissage sur le bon dépôt en ligne et l’on trouve solution à son casse-tête.

    Pour le débogage d’applications mettant en scène des processus concurrents, les développeurs peuvent allonger la liste d’outils dont ils disposent avec RacerD. L’outil est accessible via le dépôt Infer de GitHub publié par Facebook sous licence BSD. Infer est un outil d’analyse statique de code Java, C++, Objective-C et C. Le lancement de RacerD requiert l’exécution de la commande infer --racerd-only -- javac nom du fichier.java pour s’assurer que seuls les résultats de l’analyse effectuée par l’outil soient affichés. RacerD prend uniquement le code Java pour le moment. Facebook annonce que d’autres langages (Java, C++, Objective-C, C, etc.) suivront.

    RacerD est basé sur une technique dénommée « logique de séparation concurrente ». D’après Facebook, la mise en œuvre de cette dernière permet de détecter l’accès concurrent à des données par des processus sans qu’il soit nécessaire que le programme qui provoque leur activation soit exécuté. La technique a aussi un impact sur le temps nécessaire pour mener une telle analyse en comparaison aux méthodes dites par « force brute ». D’après Facebook, l’outil est capable d’analyser un million de lignes de code mettant en œuvre des accès concurrents en 15 minutes là où il faudrait 3,4 millions d’années pour analyser 80 lignes du même code par la force brute.

    RacerD a été testé en production sur l’application Android liée au fil d’actualités de Facebook en 2016. D’après le géant d’Internet, l’outil a permis de détecter 1000 bogues d’accès concurrents aux données avant que la version multiprocessus du fil d’actualités ne soit lancée. Le passage à la version multiprocessus aurait mené à une augmentation de 5 % des performances de l’application Android liée au fil d’actualités. Toutefois, il convient de souligner que dans sa forme actuelle, l’outil a été taillé sur mesure pour donner satisfaction aux ingénieurs de l’équipe de développement Android dans de brefs délais. Il serait donc prudent de l’utiliser en combinaison à d’autres pour contourner les failles qui, logiquement, sommeillent encore en son sein.

    Source : GitHub, Facebook

    Et vous ?

    Qu’en pensez-vous ?

    Utilisez-vous des outils similaires ? Si oui, lesquels ?
    Contribuez au club : Corrections, suggestions, critiques, ... : Contactez le service news et Rédigez des actualités

  2. #2
    Expert éminent
    Avatar de transgohan
    Homme Profil pro
    Développeur Temps réel Embarqué
    Inscrit en
    janvier 2011
    Messages
    3 146
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Temps réel Embarqué

    Informations forums :
    Inscription : janvier 2011
    Messages : 3 146
    Points : 9 386
    Points
    9 386
    Par défaut
    Je salue le partage de l'outil.

    Mais ils ont vraiment découvert 1000 bugs d'accès concurrent ???
    Visiblement soit leur application est une usine à gaz peu maintenue, soit elle a été développée par des personnes qui n'y connaissent rien en programmation concurrente...

    « Toujours se souvenir que la majorité des ennuis viennent de l'espace occupé entre la chaise et l'écran de l'ordinateur. »
    « Le watchdog aboie, les tests passent »

  3. #3
    Membre actif
    Homme Profil pro
    Consultant informatique
    Inscrit en
    février 2014
    Messages
    92
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : février 2014
    Messages : 92
    Points : 204
    Points
    204
    Par défaut
    Attention, à ce qu'il semble ce n'est pas réellement un outil de deboggage, mais un outil d'analyse de code, c'est à dire un outil qui analyse la qualité du code. J'en ai essayé un une fois sur du C++ (sonarQube ?), qui me dit par exemple (de mémoire) :
    - utilisation de (char *) alors que le paramètre attendu est (const char *) -> ok, important,
    - conversion implicite de type (par exemple long vers int) -> ok, important,
    - utilisation de #define -> je ne suis pas d'accord : il faut absolument éviter le code de type "#define max(a,b) ..." (remplacer par des fonctions inline qui en plus effectuent un contrôle de type) ou "#define gMyGlobal ..." (utiliser selon le cas des enums ou des static const) mais l'opérateur est irremplaçable dans bien des cas (#if TARGET== ...)

    Pour résumer, ce ne sont pas 1000 bugs qui ont été détectés, mais 1000 "anomalies" ! Avec pour certaines des conséquences nulles car l'écriture a pu être volontaire.

  4. #4
    Membre extrêmement actif
    Homme Profil pro
    Développeur Java
    Inscrit en
    septembre 2011
    Messages
    747
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : septembre 2011
    Messages : 747
    Points : 2 852
    Points
    2 852
    Par défaut
    Après avec Sonar (comme avec tous les outils du même type), c'est a toi (enfin à celui qui configure le serveur de Sonar/etc.) d'adapter les règles selon ce qui a été décidé pour le projet, sinon il prend en compte des règles par défaut qui ne sont peut etre pas suivies.

Discussions similaires

  1. Facebook propose en open source son framework Hack Codegen
    Par Stéphane le calme dans le forum Actualités
    Réponses: 0
    Dernier message: 22/08/2015, 16h46
  2. Réponses: 2
    Dernier message: 15/06/2015, 14h43
  3. Facebook publie en open source un ensemble d'API de chiffrement
    Par Stéphane le calme dans le forum Logiciels Libres & Open Source
    Réponses: 0
    Dernier message: 02/02/2014, 21h01
  4. Réponses: 5
    Dernier message: 08/04/2011, 15h28
  5. Réponses: 0
    Dernier message: 08/04/2011, 12h18

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo