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

Tests et Performance Java Discussion :

JUnit sur classes obfusquées avec ProGuard


Sujet :

Tests et Performance Java

  1. #1
    Membre averti
    Avatar de Heavy Metal Hero
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2007
    Messages
    152
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Juin 2007
    Messages : 152
    Points : 333
    Points
    333
    Billets dans le blog
    13
    Par défaut JUnit sur classes obfusquées avec ProGuard
    Bonjour, je voudrais savoir comment sommes-nous censés tester une application obfusquée avec Proguard. J'ai une règle dans mon build.xml qui me permet de compiler les tests :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    <!-- compile all test classes  -->
    	<target name="compile-test" depends="dist_all">
    		<!-- reset test output directory -->
    		<mkdir dir="${build}/${test}" />
     
    		<javac srcdir="." destdir="${build}/${test}" debuglevel="lines,vars,source" debug="true" includeAntRuntime="false">
    			<classpath>
    				<fileset dir="${binaries_editor}" includes="*jar" />
    				<fileset dir="${antBinaries}" includes="*jar" />
    			</classpath>
    			<include name="${test}/**/*.java" />
    			<compilerarg value="-Xlint" />
    			<!-- Enable all recommended warnings. -->
    		</javac>
    	</target>
    binaries_editor contient les jars externes de l'application ainsi que celui de l'application elle-même (obfusquée). Quand je lance la règle, la génération échoue et j'ai une liste de messages d'erreur disant que tel symbol n'a pas été trouvé, probablement parce que les classes obfusquées n'ont pas le même nom. quand j'écris binaries_editor.debug, qui est le dossier contenant le jar de l'application compilée et non obfusquée, la génération marche.

    Du coup faut-il tester les fichiers obfusqués ou les fichiers clairs ? Dans le cas premier, comment faire ?

    Merci de votre aide.

  2. #2
    Membre averti
    Avatar de Heavy Metal Hero
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2007
    Messages
    152
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Juin 2007
    Messages : 152
    Points : 333
    Points
    333
    Billets dans le blog
    13
    Par défaut
    J'ai trouvé la solution.
    Déjà, il faut tester les classes obfusqués, car l'obfusquation peut provoquer des bugs, les tests pourront alors les révéler.
    Pour se faire, il faut inclure les tests dans la procédure d'obfuscation, ce qui aura pour effet de mettre à jour toutes les références.Il faut mettre au début du fichier proguard (.pro) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    -injars ./app.jar
    -injars ./build/test
    -outjars ./binaries/test/
    Ainsi dans le dossier de l'outjars, il y aura un dossier contenant les tests récupérés depuis ./build/test et un fichier app.jar contenant l'application obfusquée
    Il vaut mieux ne pas obfusquer les classes de tests, pour pourvoir savoir quels tests plantent. On rajoute donc dans le fichier .pro :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    -keepnames class app.**Test
    Ensuite, pour ce qui est des règles du build.xml, il faut d'abord compiler l'application, ensuite compiler les tests avec une fonction semblable à celle du post précedent. Ensuite on obsuque les classes avec une règle qui appelle notre fichier .pro et on fini par la règle qui lance les tests.

    En regardant avec un décompilateur les .class du .jar, les fichier sont obfusqués. en regardant les tests générés après l'obfuscation, on voit qu'ils ne sont pas obfusqués, mais que les références aux objets ont été remplacées par les noms de l'obfuscation

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. undefined symbol sur classe mère avec dlopen
    Par Yann__ dans le forum C++
    Réponses: 18
    Dernier message: 24/04/2008, 16h03
  2. Find() avec predicate sur classe personnalisée
    Par Ivynox dans le forum Windows Forms
    Réponses: 1
    Dernier message: 06/02/2008, 11h21
  3. Réponses: 4
    Dernier message: 15/10/2006, 18h05
  4. Boucle sur chaque div avec class= ....
    Par zevince dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 04/04/2006, 12h12
  5. Problème sur classe Transformer avec les <!--
    Par tykool dans le forum Format d'échange (XML, JSON...)
    Réponses: 1
    Dernier message: 10/01/2006, 10h20

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