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

Eclipse Discussion :

Tests DJEclipse


Sujet :

Eclipse

  1. #1
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Points : 29 131
    Points
    29 131
    Billets dans le blog
    2
    Par défaut Tests DJEclipse
    NDM : Cette discussion a été créé initialement suite à ce post.

    DJEclipse est en version 0.0.5 : ça me semble prématuré de le juger. La première chose qui me choque dans DJEclipse et qui me fait revenir à JADClipse immédiatement malgré ses nombreux défauts : les sources ne sont pas colorisés : avec JADClipse : le source s'ouvre dans l'éditeur Java, ce qui, en plus des facilités (coloristation, folding...) permet de suivre les méthodes, remonter aux appels, etc...


    PS :

    Je viens de faire autre test (méthode org.mozilla.universalchardet.UniversalDetector.handlData() prise au hasard)

    Source d'origine
    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
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    public void handleData(final byte[] buf, int offset, int length)
        {
            if (this.done) {
                return;
            }
     
            if (length > 0) {
                this.gotData = true;
            }
     
            if (this.start) {
                this.start = false;
                if (length > 3) {
                    int b1 = buf[offset] & 0xFF;
                    int b2 = buf[offset+1] & 0xFF;
                    int b3 = buf[offset+2] & 0xFF;
                    int b4 = buf[offset+3] & 0xFF;
     
                    switch (b1) {
                    case 0xEF:
                        if (b2 == 0xBB && b3 == 0xBF) {
                            this.detectedCharset = Constants.CHARSET_UTF_8;
                        }
                        break;
                    case 0xFE:
                        if (b2 == 0xFF && b3 == 0x00 && b4 == 0x00) {
                            this.detectedCharset = Constants.CHARSET_X_ISO_10646_UCS_4_3412;
                        } else if (b2 == 0xFF) {
                            this.detectedCharset = Constants.CHARSET_UTF_16BE;
                        }
                        break;
                    case 0x00:
                        if (b2 == 0x00 && b3 == 0xFE && b4 == 0xFF) {
                            this.detectedCharset = Constants.CHARSET_UTF_32BE;
                        } else if (b2 == 0x00 && b3 == 0xFF && b4 == 0xFE) {
                            this.detectedCharset = Constants.CHARSET_X_ISO_10646_UCS_4_2143;
                        }
                        break;
                    case 0xFF:
                        if (b2 == 0xFE && b3 == 0x00 && b4 == 0x00) {
                            this.detectedCharset = Constants.CHARSET_UTF_32LE;
                        } else if (b2 == 0xFE) {
                            this.detectedCharset = Constants.CHARSET_UTF_16LE;
                        }
                        break;
                    } // swich end
     
                    if (this.detectedCharset != null) {
                        this.done = true;
                        return;
                    }
                }
            } // if (start) end
     
            int maxPos = offset + length;
            for (int i=offset; i<maxPos; ++i) {
                int c = buf[i] & 0xFF;
                if ((c & 0x80) != 0 && c != 0xA0) {
                    if (this.inputState != InputState.HIGHBYTE) {
                        this.inputState = InputState.HIGHBYTE;
     
                        if (this.escCharsetProber != null) {
                            this.escCharsetProber = null;
                        }
     
                        if (this.probers[0] == null) {
                            this.probers[0] = new MBCSGroupProber();
                        }
                        if (this.probers[1] == null) {
                            this.probers[1] = new SBCSGroupProber();
                        }
                        if (this.probers[2] == null) {
                            this.probers[2] = new Latin1Prober();
                        }
                    }
                } else {
                    if (this.inputState == InputState.PURE_ASCII &&
                        (c == 0x1B || (c == 0x7B && this.lastChar == 0x7E))) {
                        this.inputState = InputState.ESC_ASCII;
                    }
                    this.lastChar = buf[i];
                }
            } // for end
     
            CharsetProber.ProbingState st;
            if (this.inputState == InputState.ESC_ASCII) {
                if (this.escCharsetProber == null) {
                    this.escCharsetProber = new EscCharsetProber();
                }
                st = this.escCharsetProber.handleData(buf, offset, length);
                if (st == CharsetProber.ProbingState.FOUND_IT) {
                    this.done = true;
                    this.detectedCharset = this.escCharsetProber.getCharSetName();
                }
            } else if (this.inputState == InputState.HIGHBYTE) {
                for (int i=0; i<this.probers.length; ++i) {
                    st = this.probers[i].handleData(buf, offset, length);
                    if (st == CharsetProber.ProbingState.FOUND_IT) {
                        this.done = true;
                        this.detectedCharset = this.probers[i].getCharSetName();
                        return;
                    }
                }
            } else { // pure ascii
                // do nothing
            }
        }
    JADClipse :
    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
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    public void handleData(byte[] paramArrayOfByte, int paramInt1, int paramInt2)
      {
        if (this.done)
          return;
        if (paramInt2 > 0)
          this.gotData = true;
        int k;
        if (this.start)
        {
          this.start = false;
          if (paramInt2 > 3)
          {
            i = paramArrayOfByte[paramInt1] & 0xFF;
            j = paramArrayOfByte[(paramInt1 + 1)] & 0xFF;
            k = paramArrayOfByte[(paramInt1 + 2)] & 0xFF;
            int l = paramArrayOfByte[(paramInt1 + 3)] & 0xFF;
            switch (i)
            {
            case 239:
              if ((j == 187) && (k == 191))
                this.detectedCharset = Constants.CHARSET_UTF_8;
              break;
            case 254:
              if ((j == 255) && (k == 0) && (l == 0))
                this.detectedCharset = Constants.CHARSET_X_ISO_10646_UCS_4_3412;
              else if (j == 255)
                this.detectedCharset = Constants.CHARSET_UTF_16BE;
              break;
            case 0:
              if ((j == 0) && (k == 254) && (l == 255))
                this.detectedCharset = Constants.CHARSET_UTF_32BE;
              else if ((j == 0) && (k == 255) && (l == 254))
                this.detectedCharset = Constants.CHARSET_X_ISO_10646_UCS_4_2143;
              break;
            case 255:
              if ((j == 254) && (k == 0) && (l == 0))
                this.detectedCharset = Constants.CHARSET_UTF_32LE;
              else if (j == 254)
                this.detectedCharset = Constants.CHARSET_UTF_16LE;
            }
            if (this.detectedCharset != null)
            {
              this.done = true;
              return;
            }
          }
        }
        int i = paramInt1 + paramInt2;
        for (int j = paramInt1; j < i; ++j)
        {
          k = paramArrayOfByte[j] & 0xFF;
          if (((k & 0x80) != 0) && (k != 160))
          {
            if (this.inputState == InputState.HIGHBYTE)
              continue;
            this.inputState = InputState.HIGHBYTE;
            if (this.escCharsetProber != null)
              this.escCharsetProber = null;
            if (this.probers[0] == null)
              this.probers[0] = new MBCSGroupProber();
            if (this.probers[1] == null)
              this.probers[1] = new SBCSGroupProber();
            if (this.probers[2] != null)
              continue;
            this.probers[2] = new Latin1Prober();
          }
          else
          {
            if ((this.inputState == InputState.PURE_ASCII) && (((k == 27) || ((k == 123) && (this.lastChar == 126)))))
              this.inputState = InputState.ESC_ASCII;
            this.lastChar = paramArrayOfByte[j];
          }
        }
        CharsetProber.ProbingState localProbingState;
        if (this.inputState == InputState.ESC_ASCII)
        {
          if (this.escCharsetProber == null)
            this.escCharsetProber = new EscCharsetProber();
          localProbingState = this.escCharsetProber.handleData(paramArrayOfByte, paramInt1, paramInt2);
          if (localProbingState != CharsetProber.ProbingState.FOUND_IT)
            return;
          this.done = true;
          this.detectedCharset = this.escCharsetProber.getCharSetName();
        }
        else
        {
          if (this.inputState != InputState.HIGHBYTE)
            return;
          for (k = 0; k < this.probers.length; ++k)
          {
            localProbingState = this.probers[k].handleData(paramArrayOfByte, paramInt1, paramInt2);
            if (localProbingState != CharsetProber.ProbingState.FOUND_IT)
              continue;
            this.done = true;
            this.detectedCharset = this.probers[k].getCharSetName();
            return;
          }
        }
      }
    DJEclipse

    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
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    public void handleData(byte[] arrby, int n, int n2) {
            int n3;
            int n4;
            int n5;
            if (this.done) {
                return;
            }
            if (n2 > 0) {
                this.gotData = true;
            }
            if (this.start) {
                this.start = false;
                if (n2 > 3) {
                    n5 = arrby[n] & 255;
                    n3 = arrby[n + 1] & 255;
                    n4 = arrby[n + 2] & 255;
                    int n6 = arrby[n + 3] & 255;
                    switch (n5) {
                        case 239: {
                            if (n3 != 187 || n4 != 191) break;
                            this.detectedCharset = org.mozilla.universalchardet.Constants.CHARSET_UTF_8;
                            break;
                        }
                        case 254: {
                            if (n3 == 255 && n4 == 0 && n6 == 0) {
                                this.detectedCharset = org.mozilla.universalchardet.Constants.CHARSET_X_ISO_10646_UCS_4_3412;
                                break;
                            }
                            if (n3 != 255) break;
                            this.detectedCharset = org.mozilla.universalchardet.Constants.CHARSET_UTF_16BE;
                            break;
                        }
                        case 0: {
                            if (n3 == 0 && n4 == 254 && n6 == 255) {
                                this.detectedCharset = org.mozilla.universalchardet.Constants.CHARSET_UTF_32BE;
                                break;
                            }
                            if (n3 != 0 || n4 != 255 || n6 != 254) break;
                            this.detectedCharset = org.mozilla.universalchardet.Constants.CHARSET_X_ISO_10646_UCS_4_2143;
                            break;
                        }
                        case 255: {
                            if (n3 == 254 && n4 == 0 && n6 == 0) {
                                this.detectedCharset = org.mozilla.universalchardet.Constants.CHARSET_UTF_32LE;
                                break;
                            }
                            if (n3 != 254) break;
                            this.detectedCharset = org.mozilla.universalchardet.Constants.CHARSET_UTF_16LE;
                        }
                    }
                    if (this.detectedCharset != null) {
                        this.done = true;
                        return;
                    }
                }
            }
            n5 = n + n2;
            for (n3 = n;
             n3 < n5; ++n3) {
                n4 = arrby[n3] & 255;
                if ((n4 & 128) != 0 && n4 != 160) {
                    if (this.inputState == org.mozilla.universalchardet.UniversalDetector$InputState.HIGHBYTE) continue;
                    this.inputState = org.mozilla.universalchardet.UniversalDetector$InputState.HIGHBYTE;
                    if (this.escCharsetProber != null) {
                        this.escCharsetProber = null;
                    }
                    if (this.probers[0] == null) {
                        this.probers[0] = new org.mozilla.universalchardet.prober.MBCSGroupProber();
                    }
                    if (this.probers[1] == null) {
                        this.probers[1] = new org.mozilla.universalchardet.prober.SBCSGroupProber();
                    }
                    if (this.probers[2] != null) continue;
                    this.probers[2] = new org.mozilla.universalchardet.prober.Latin1Prober();
                    continue;
                }
                if (this.inputState == org.mozilla.universalchardet.UniversalDetector$InputState.PURE_ASCII && (n4 == 27 || n4 == 123 && this.lastChar == 126)) {
                    this.inputState = org.mozilla.universalchardet.UniversalDetector$InputState.ESC_ASCII;
                }
                this.lastChar = arrby[n3];
            }
            if (this.inputState == org.mozilla.universalchardet.UniversalDetector$InputState.ESC_ASCII) {
                org.mozilla.universalchardet.prober.CharsetProber$ProbingState probingState;
                if (this.escCharsetProber == null) {
                    this.escCharsetProber = new org.mozilla.universalchardet.prober.EscCharsetProber();
                }
                if ((probingState = this.escCharsetProber.handleData(arrby, n, n2)) == org.mozilla.universalchardet.prober.CharsetProber$ProbingState.FOUND_IT) {
                    this.done = true;
                    this.detectedCharset = this.escCharsetProber.getCharSetName();
                }
            } else if (this.inputState == org.mozilla.universalchardet.UniversalDetector$InputState.HIGHBYTE) {
                for (n4 = 0;
                 n4 < this.probers.length; ++n4) {
                    org.mozilla.universalchardet.prober.CharsetProber$ProbingState probingState = this.probers[n4].handleData(arrby, n, n2);
                    if (probingState != org.mozilla.universalchardet.prober.CharsetProber$ProbingState.FOUND_IT) continue;
                    this.done = true;
                    this.detectedCharset = this.probers[n4].getCharSetName();
                    return;
                }
            }
        }
    Intéressant de voir que le code produit par DJCompiler semble à première vue compilable contrairement à celui produit par JADClipse manisfestement non compilable sans modification (par contre, bof, le recyclage de n5, même si ça compile mieux)

  2. #2
    Membre du Club
    Inscrit en
    Mars 2006
    Messages
    22
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 22
    Points : 41
    Points
    41
    Par défaut
    Joel, est-ce que tu as fait un test avec du code qui contient des generics et des lambdas ?

  3. #3
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Points : 29 131
    Points
    29 131
    Billets dans le blog
    2
    Par défaut
    Citation Envoyé par nidget Voir le message
    Joel, est-ce que tu as fait un test avec du code qui contient des generics et des lambdas ?
    Je viens de le faire et ça marche plutôt pas mal (Par contre, je ne peux comparer avec JADClipse arrêté en 2009, donc ne traitant assurément pas les lambdas).

    J'ai également testé le jar qui me pose tant de souci avec JADClipse

    1. premier point positif : je n'ai pas de numéros de lignes en commentaire avec JDEclipse alors que JADClipse ajoute des numéros de ligne devant chaque ligne lorsqu'il décale les lignes par rapport à la numérotation d'origine, ce qui est une plaie pour le copier/coller (obliger de faire une regexp pour les virer)
    2. Je n'ai pas les imports avec DJEclipse alors que je les ai avec JADClipse
    3. J'ai ces bizarretés dans les 2 :
      • JAD : static Class class$com$ephox$editlive$java2$editor$EphoxHTMLDocument;
      • DJ : static /* synthetic */ java.lang.Class class$com$ephox$editlive$java2$editor$EphoxHTMLDocument;
    4. Les classes qui font planter JAD, et donc crasher Eclipse, décompile nickel, ce qui est un plus incontestable


    Vraiment, manque que l'affichage dans l'éditeur Java, et je pourrais me laisser tenter sans même (re)tester JDEclipse

  4. #4
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Points : 29 131
    Points
    29 131
    Billets dans le blog
    2
    Par défaut
    Autre problème et non des moindres : quand on veut accéder à un source qui est attaché, on passe quand même par la décompilation. Même si la visualisation du source décompilé était affiché dans un éditeur complet (avec recherche, colorisation, folding, etc...), il serait absolument indispensable d'afficher en priorité les sources attachés et de ne pas passer par le décompilateur dans ce cas. Si on attache un source, c'est qu'on veut voir ce source en entier, tel quel (y compris, avec les commentaires, les noms de variables d'origine, etc...). Là, en l'état, même les sources des classes standards du jdk sont innacessibles.

Discussions similaires

  1. Script test de deux chaine avec if
    Par kacedda dans le forum Linux
    Réponses: 6
    Dernier message: 02/05/2003, 16h38
  2. [XMLRAD] test de nullité
    Par Pm dans le forum XMLRAD
    Réponses: 5
    Dernier message: 29/11/2002, 11h57
  3. test collisions
    Par tatakinawa dans le forum OpenGL
    Réponses: 5
    Dernier message: 08/06/2002, 07h03

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