Glacier Class Immutable Checker не работает на Checker Framework 3.6.0

Я пытаюсь использовать Glacier Class Immutable Checker, который не работает на Checker Framework 3.6.0.

Я получаю Glacier 0.1 с Maven. (http://mcoblenz.github.io/Glacier/)

Затем я попытался проверить исходный код образца, но возникает ошибка. Могу ли я использовать Glacier Class Immutable Checker с Checker Framework 3.6.0?

Пакет репликации, который можно загрузить с сайта http://mcoblenz.github.io/Glacier/, содержит собственная копия Checker Framework (файлы _1_ и _2_), и вы должны использовать ее.


person Alumuko    schedule 28.08.2020    source источник


Ответы (2)


Ледник больше не поддерживается. Его средство отслеживания проблем содержит ту же ошибку, о которой вы говорили, — запуск Glacier с более новой версией Checker Framework, но сопровождающий говорит, что у меня сейчас нет времени этим заниматься.

Если вы хотите обновить Glacier самостоятельно, вы можете увидеть запрос на вытягивание, который обновил Glacier до работа с Checker Framework 2.3.2. Вам нужно будет собрать Glacier из исходного кода, чтобы использовать эту версию Checker Framework. Эта версия Checker Framework доступна в Maven Central.

Я прочитал руководство Checker Framework, версия 3.6.0 (3 августа 2020 г.).

person mernst    schedule 29.08.2020

25.5 Glacier: неизменность класса Glacier [CNA+17] обеспечивает неизменность транзитивного класса в Java. Согласно его веб-странице:

а также

25.9 Средства проверки неизменяемости: IGJ, OIGJ и Javari Javari [TE05], IGJ [ZPA+07] и OIGJ [ZPL+10] — это системы типов, обеспечивающие соблюдение ограничений неизменности. Средства проверки типов для всех трех систем типов распространялись вместе с Checker Framework до версии 1.9.13 (от 1 апреля 2016 г.). Если вы хотите их использовать, установите Checker Framework версии 1.9.13.

Тогда я подумал, что Glacier работает, а средства проверки неизменяемости не работают в Checker Framework 3.6.0.

Спасибо мернст.

Я так понял, что не только чекеры Immutability, но и Glacier не работают с Checker Framework версии 3.6.0. фактически.

Я попытался проверить исходный код с помощью SpotBugs с помощью net.jcip.annotations.Immutable. Мне кажется, это работает.

Я буду использовать SpotBugs.

Спасибо, что прочитали мой плохой английский.

[jsr308.javac] javac 11.0.7 [jsr308.javac] ошибка: InvocationTargetException при вызове конструктора для класса edu.cmu.cs.glacier.GlacierAnnotatedTypeFactory для аргументов [edu.cmu.cs.glacier.GlacierChecker@625732]; Основная причина: java.lang.NoSuchMethodError: 'javax.lang.model.element.AnnotationMirror org.checkerframework.javacutil.AnnotationUtils.fromClass(javax.lang.model.util.Elements, java.lang.Class)' [jsr308.javac ] ; Сбой Checker Framework. Пожалуйста, сообщите об аварии. [jsr308.javac] Исключение: java.lang.reflect.InvocationTargetException; java.lang.reflect.InvocationTargetException [jsr308.javac] в java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0 (собственный метод) [jsr308.javac] в java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance( NativeConstructorAccessorImpl.java:62) [jsr308.javac] в java.base/jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) [jsr308.javac] в java.base/java.lang.reflect.Constructor. newInstance(Constructor.java:490) [jsr308.javac] в org.checkerframework.common.basetype.BaseTypeChecker.invokeConstructorFor(BaseTypeChecker.java:300) [jsr308.javac] в org.checkerframework.common.basetype.BaseTypeVisitor.createTypeFactory( BaseTypeVisitor.java:249) [jsr308.javac] на org.checkerframework.common.basetype.BaseTypeVisitor.(BaseTypeVisitor.java:217) [jsr308.javac] на org.checkerframework.common.basetype.BaseTypeVisitor.(BaseTypeVisitor.java: 206) [jsr308.javac] на edu.cmu.cs.glac ier.GlacierVisitor.(GlacierVisitor.java:54) [jsr308.javac] в edu.cmu.cs.glacier.GlacierChecker.createSourceVisitor(GlacierChecker.java:8) [jsr308.javac] в edu.cmu.cs.glacier.GlacierChecker .createSourceVisitor(GlacierChecker.java:5) [jsr308.javac] в org.checkerframework.framework.source.SourceChecker.initChecker(SourceChecker.java:820) [jsr308.javac] в org.checkerframework.common.basetype.BaseTypeChecker.initChecker (BaseTypeChecker.java:111) [jsr308.javac] в org.checkerframework.framework.source.SourceChecker.typeProcessingStart(SourceChecker.java:771) [jsr308.javac] в org.checkerframework.javacutil.AbstractTypeProcessor$AttributionTaskListener.finished(AbstractTypeProcessor .java:167) [jsr308.javac] в jdk.compiler/com.sun.tools.javac.api.ClientCodeWrapper$WrappedTaskListener.finished(ClientCodeWrapper.java:828) [jsr308.javac] в jdk.compiler/com.sun .tools.javac.api.MultiTaskListener.finished(MultiTaskListener.java:132) [jsr308.javac] на jdk.compiler/com .sun.tools.javac.main. JavaCompiler.flow(JavaCompiler.java:1418) [jsr308.javac] в jdk.compiler/com.sun.tools.javac.main.JavaCompiler.flow(JavaCompiler.java:1375) [jsr308.javac] в jdk.compiler/ com.sun.tools.javac.main.JavaCompiler.compile(JavaCompiler.java:973) [jsr308.javac] в jdk.compiler/com.sun.tools.javac.main.Main.compile(Main.java:311) [jsr308.javac] в jdk.compiler/com.sun.tools.javac.main.Main.compile(Main.java:170) [jsr308.javac] в jdk.compiler/com.sun.tools.javac.Main. compile(Main.java:57) [jsr308.javac] в jdk.compiler/com.sun.tools.javac.Main.main(Main.java:43) [jsr308.javac] Вызвано: java.lang.NoSuchMethodError: 'javax.lang.model.element.AnnotationMirror org.checkerframework.javacutil.AnnotationUtils.fromClass(javax.lang.model.util.Elements, java.lang.Class)' [jsr308.javac] в edu.cmu.cs.glacier .GlacierAnnotatedTypeFactory.(GlacierAnnotatedTypeFactory.java:46) [jsr308.javac] ... еще 24 [jsr308.javac]
[jsr308.javac] Основное исключение: java.lang.NoSuchMe thodError: 'javax.lang.model.element.AnnotationMirror org.checkerframework.javacutil.AnnotationUtils.fromClass(javax.lang.model.util.Elements, java.lang.Class)'; java.lang.NoSuchMethodError: 'javax.lang.model.element.AnnotationMirror org.checkerframework.javacutil.AnnotationUtils.fromClass(javax.lang.model.util.Elements, java.lang.Class)' [jsr308.javac] в edu .cmu.cs.glacier.GlacierAnnotatedTypeFactory.(GlacierAnnotatedTypeFactory.java:46) [jsr308.javac] в java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(собственный метод) [jsr308.javac] в java.base/jdk .internal.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62) [jsr308.javac] в java.base/jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) [jsr308.javac] в java.base /java.lang.reflect.Constructor.newInstance(Constructor.java:490) [jsr308.javac] в org.checkerframework.common.basetype.BaseTypeChecker.invokeConstructorFor(BaseTypeChecker.java:300) [jsr308.javac] в org.checkerframework .common.basetype.BaseTypeVisitor.createTypeFactory(BaseTypeVisitor.java:24 9) [jsr308.javac] в org.checkerframework.common.basetype.BaseTypeVisitor.(BaseTypeVisitor.java:217) [jsr308.javac] в org.checkerframework.common.basetype.BaseTypeVisitor.(BaseTypeVisitor.java:206) [jsr308 .javac] в edu.cmu.cs.glacier.GlacierVisitor.(GlacierVisitor.java:54) [jsr308.javac] в edu.cmu.cs.glacier. GlacierChecker.createSourceVisitor(GlacierChecker.java:8) [jsr308.javac] в edu.cmu.cs.glacier.GlacierChecker.createSourceVisitor(GlacierChecker.java:5) [jsr308.javac] в org.checkerframework.framework.source.SourceChecker. initChecker(SourceChecker.java:820) [jsr308.javac] в org.checkerframework.common.basetype.BaseTypeChecker.initChecker(BaseTypeChecker.java:111) [jsr308.javac] в org.checkerframework.framework.source.SourceChecker.typeProcessingStart( SourceChecker.java:771) [jsr308.javac] в org.checkerframework.javacutil.AbstractTypeProcessor$AttributionTaskListener.finished(AbstractTypeProcessor.java:167) [jsr308.javac] в jdk.compiler/com.sun.tools.javac.api. ClientCodeWrapper$WrappedTaskListener.finished(ClientCodeWrapper.java:828) [jsr308.javac] в jdk.compiler/com.sun.tools.javac.api.MultiTaskListener.finished(MultiTaskListener.java:132) [jsr308.javac] в jdk. компилятор/com.sun.tools.javac.main.JavaCompiler.flow(JavaCompiler.java:1418) [jsr308.javac] в jdk.compiler/com.sun.tools.javac.main.JavaCompiler.flow(JavaCompiler.java:1375) [jsr308.javac] в jdk.compiler/com.sun.tools.javac.main.JavaCompiler.compile(JavaCompiler. java:973) [jsr308.javac] в jdk.compiler/com.sun.tools.javac.main.Main.compile(Main.java:311) [jsr308.javac] в jdk.compiler/com.sun.tools. javac.main.Main.compile(Main.java:170) [jsr308.javac] в jdk.compiler/com.sun.tools.javac.Main.compile(Main.java:57) [jsr308.javac] в jdk. компилятор/com.sun.tools.javac.Main.main(Main.java:43) [jsr308.javac] 1 ошибка

person Alumuko    schedule 30.08.2020