45 votes

Une bonne bibliothèque de conception par contrat pour Java?

Il y a quelques années, j'ai mené une enquête sur les packages DbC pour Java et je n'étais totalement satisfait d'aucun d'entre eux. Malheureusement, je n'ai pas gardé de bonnes notes sur mes découvertes et je suppose que les choses ont changé. Quelqu'un voudrait-il comparer et contraster différents packages DbC pour Java?

22voto

Verhagen Points 1266

Il y a une belle vue d'ensemble sur Wikipédia à propos de la Conception par Contrat, à la fin il y a une section concernant les langues avec le soutien de tiers bibliothèques, qui comprend une jolie série de bibliothèques Java. La plupart de ces bibliothèques Java sont basées sur Java Affirmations.

Dans le cas où vous avez seulement besoin de Condition préalable à la Vérification il y a aussi un léger Méthode de validation des Arguments de solution, à SourceForge sous Java Argument de Validation (Plaine d'implémentation de Java).

Selon votre problème, peut-être l' Ovale du cadre, pour le terrain/propriété des Contraintes de validation est un bon choix. Ce cadre vous permet de placer des Contraintes de toutes sortes de formes (Annotations, POJO, XML). Créer des contraintes du client par le biais de POJO ou les langages de script (JavaScript, Groovy, BeanShell, OGNL, MVEL). Et elle aussi partie met en œuvre la Programmation par Contrat.

6voto

user Points 1458

Google a une bibliothèque open source appelé les contrats de java.

Les contrats de Java, c'est notre nouvel outil open source. Conditions préalables, les postconditions et invariants sont ajoutés en tant que Java expressions booléennes à l'intérieur des annotations. Par défaut, ils ne font rien, mais activé par l'intermédiaire d'une JVM argument, ils sont vérifiés au moment de l'exécution.

• @Requires, @Ensures, @ThrowEnsures and @Invariant specify contracts as Java boolean expressions
• Contracts are inherited from both interfaces and classes and can be selectively enabled at runtime

les contrats de java.

2voto

Janusz Points 52607

J'ai testé contract4J une fois et je l'ai trouvé utilisable mais pas parfait. Vous créez des contrats pour et après des appels de méthodes et des invars sur l'ensemble de la classe.

Le contrat est créé en tant qu'assertion pour la méthode. Le problème est que le contrat lui-même est écrit dans une chaîne, vous n'avez donc pas de support IDE pour les contrats ni de temps de compilation si le contrat fonctionne toujours.

Un lien vers la bibliothèque

2voto

mattwright Points 588

Il a été un long temps depuis que j'ai regardé ces, mais a trouvé des vieux liens. L'un était pour le JASS.

L'autre que j'avais utilisé (et aimé) a été iContract par des Systèmes Fiables. Il avait une tâche ant qui vous irait comme un préprocesseur. Cependant, je n'arrive pas à le trouver avec quelques recherches google, on dirait qu'il a disparu. Le site d'origine est maintenant une ferme de liens. Consultez ce lien pour quelques façons possibles pour l'obtenir.

2voto

Andre Steingress Points 1689

Il est Groovy extensions qui permet la Conception par Contrat(tm) en Groovy/code Java - GContracts. Il utilise ce qu'on appelle la fermeture des annotations pour spécifier la classe d'invariants, de pré - et postconditions. Des exemples peuvent être trouvés sur le projet github wiki.

Avantage majeur: il n'est qu'un seul bocal sans dépendances externes et il peut être résolu via Maven dépôts compatibles depuis sa été placé dans le central de Maven repo.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X