{"id":31420311,"url":"https://github.com/JetBrains/fernflower","last_synced_at":"2025-09-29T23:02:56.169Z","repository":{"id":21429186,"uuid":"24747351","full_name":"JetBrains/fernflower","owner":"JetBrains","description":"Decompiler from Java bytecode to Java, used in IntelliJ IDEA.","archived":false,"fork":false,"pushed_at":"2025-09-25T16:04:33.000Z","size":7396,"stargazers_count":3790,"open_issues_count":0,"forks_count":700,"subscribers_count":162,"default_branch":"master","last_synced_at":"2025-09-25T16:35:02.485Z","etag":null,"topics":["decompiler","java","reverse-engineering"],"latest_commit_sha":null,"homepage":"https://github.com/JetBrains/intellij-community/tree/master/plugins/java-decompiler/engine","language":"Java","has_issues":false,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/JetBrains.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.txt","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":"NOTICE.txt","maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2014-10-03T05:00:15.000Z","updated_at":"2025-09-25T14:40:14.000Z","dependencies_parsed_at":"2024-01-07T13:06:41.666Z","dependency_job_id":"f16360d9-4492-40b9-ab2c-7f4cf80d1472","html_url":"https://github.com/JetBrains/fernflower","commit_stats":null,"previous_names":["jetbrains/fernflower"],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/JetBrains/fernflower","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/JetBrains%2Ffernflower","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/JetBrains%2Ffernflower/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/JetBrains%2Ffernflower/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/JetBrains%2Ffernflower/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/JetBrains","download_url":"https://codeload.github.com/JetBrains/fernflower/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/JetBrains%2Ffernflower/sbom","scorecard":{"id":397802,"data":{"date":"2025-08-11","repo":{"name":"github.com/fesh0r/fernflower","commit":"19f805558e35054ddd8e1a881291e4da7c624fa2"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":1.9,"checks":[{"name":"Maintained","score":1,"reason":"2 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 1","details":null,"documentation":{"short":"Determines if the project is \"actively maintained\".","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#maintained"}},{"name":"Packaging","score":-1,"reason":"packaging workflow not detected","details":["Warn: no GitHub/GitLab publishing workflow detected."],"documentation":{"short":"Determines if the project is published as a package that others can easily download, install, easily update, and uninstall.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#packaging"}},{"name":"Dangerous-Workflow","score":-1,"reason":"no workflows found","details":null,"documentation":{"short":"Determines if the project's GitHub Action workflows avoid dangerous patterns.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#dangerous-workflow"}},{"name":"Code-Review","score":0,"reason":"Found 0/30 approved changesets -- score normalized to 0","details":null,"documentation":{"short":"Determines if the project requires human code review before pull requests (aka merge requests) are merged.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#code-review"}},{"name":"Token-Permissions","score":-1,"reason":"No tokens found","details":null,"documentation":{"short":"Determines if the project's workflows follow the principle of least privilege.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#token-permissions"}},{"name":"CII-Best-Practices","score":0,"reason":"no effort to earn an OpenSSF best practices badge detected","details":null,"documentation":{"short":"Determines if the project has an OpenSSF (formerly CII) Best Practices Badge.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#cii-best-practices"}},{"name":"Security-Policy","score":0,"reason":"security policy file not detected","details":["Warn: no security policy file detected","Warn: no security file to analyze","Warn: no security file to analyze","Warn: no security file to analyze"],"documentation":{"short":"Determines if the project has published a security policy.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#security-policy"}},{"name":"License","score":10,"reason":"license file detected","details":["Info: project has a license file: LICENSE.txt:0","Info: FSF or OSI recognized license: Apache License 2.0: LICENSE.txt:0"],"documentation":{"short":"Determines if the project has defined a license.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#license"}},{"name":"SAST","score":0,"reason":"no SAST tool detected","details":["Warn: no pull requests merged into dev branch"],"documentation":{"short":"Determines if the project uses static code analysis.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#sast"}},{"name":"Vulnerabilities","score":10,"reason":"0 existing vulnerabilities detected","details":null,"documentation":{"short":"Determines if the project has open, known unfixed vulnerabilities.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#vulnerabilities"}},{"name":"Signed-Releases","score":-1,"reason":"no releases found","details":null,"documentation":{"short":"Determines if the project cryptographically signs release artifacts.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#signed-releases"}},{"name":"Branch-Protection","score":0,"reason":"branch protection not enabled on development/release branches","details":["Warn: branch protection not enabled for branch 'master'"],"documentation":{"short":"Determines if the default and release branches are protected with GitHub's branch protection settings.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#branch-protection"}},{"name":"Fuzzing","score":0,"reason":"project is not fuzzed","details":["Warn: no fuzzer integrations found"],"documentation":{"short":"Determines if the project uses fuzzing.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#fuzzing"}},{"name":"Pinned-Dependencies","score":-1,"reason":"no dependencies found","details":null,"documentation":{"short":"Determines if the project has declared and pinned the dependencies of its build process.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#pinned-dependencies"}},{"name":"Binary-Artifacts","score":0,"reason":"binaries present in source code","details":["Warn: binary detected: gradle/wrapper/gradle-wrapper.jar:1","Warn: binary detected: testData/bulk.jar:1","Warn: binary detected: testData/classes/InvalidMethodSignature.class:1","Warn: binary detected: testData/classes/com/intellij/tasks/context/java/BreakpointsContextProvider.class:1","Warn: binary detected: testData/classes/ext/Shadow$B.class:1","Warn: binary detected: testData/classes/ext/Shadow.class:1","Warn: binary detected: testData/classes/ext/TestClashNameIface.class:1","Warn: binary detected: testData/classes/ext/TestClashNameParent.class:1","Warn: binary detected: testData/classes/java/lang/Integer$IntegerCache.class:1","Warn: binary detected: testData/classes/java/lang/Integer.class:1","Warn: binary detected: testData/classes/java11/TestDynamicConstantPoolEntry.class:1","Warn: binary detected: testData/classes/java11/TestJava11StringConcat.class:1","Warn: binary detected: testData/classes/java11/TestJava11StringConcatEmptyAffix.class:1","Warn: binary detected: testData/classes/java11/TestJava11StringConcatSpecialChars.class:1","Warn: binary detected: testData/classes/java11/TestUnsupportedConstantPoolEntry.class:1","Warn: binary detected: testData/classes/java9/TestJava9PrivateInterfaceMethod.class:1","Warn: binary detected: testData/classes/java9/TestJava9StringConcat.class:1","Warn: binary detected: testData/classes/java9/module-info.class:1","Warn: binary detected: testData/classes/patterns/TestInstanceofPatternNotSupported.class:1","Warn: binary detected: testData/classes/patterns/TestInstanceofWithPattern.class:1","Warn: binary detected: testData/classes/patterns/TestSwitchPatternWithExpression$A.class:1","Warn: binary detected: testData/classes/patterns/TestSwitchPatternWithExpression$AA.class:1","Warn: binary detected: testData/classes/patterns/TestSwitchPatternWithExpression$B.class:1","Warn: binary detected: testData/classes/patterns/TestSwitchPatternWithExpression$I.class:1","Warn: binary detected: testData/classes/patterns/TestSwitchPatternWithExpression.class:1","Warn: binary detected: testData/classes/pkg/KotlinDefaultValue.class:1","Warn: binary detected: testData/classes/pkg/MoreAnnotations$NestedAnnotation.class:1","Warn: binary detected: testData/classes/pkg/MoreAnnotations$TestEnum.class:1","Warn: binary detected: testData/classes/pkg/MoreAnnotations.class:1","Warn: binary detected: testData/classes/pkg/NestedType$Foo$Bar.class:1","Warn: binary detected: testData/classes/pkg/NestedType$Foo.class:1","Warn: binary detected: testData/classes/pkg/NestedType$FooBar$Bar.class:1","Warn: binary detected: testData/classes/pkg/NestedType$FooBar.class:1","Warn: binary detected: testData/classes/pkg/NestedType.class:1","Warn: binary detected: testData/classes/pkg/NonSharedName.class:1","Warn: binary detected: testData/classes/pkg/PreserveAssignmentToRecord.class:1","Warn: binary detected: testData/classes/pkg/PreserveAssignmentToRecord2.class:1","Warn: binary detected: testData/classes/pkg/PrivateClasses$1$1.class:1","Warn: binary detected: testData/classes/pkg/PrivateClasses$1$1CapturingLocalR1.class:1","Warn: binary detected: testData/classes/pkg/PrivateClasses$1$1NonCapturingLocalR1.class:1","Warn: binary detected: testData/classes/pkg/PrivateClasses$1$2.class:1","Warn: binary detected: testData/classes/pkg/PrivateClasses$1.class:1","Warn: binary detected: testData/classes/pkg/PrivateClasses$1CapturingLocalM1.class:1","Warn: binary detected: testData/classes/pkg/PrivateClasses$1CapturingLocalM2.class:1","Warn: binary detected: testData/classes/pkg/PrivateClasses$1NonCapturingLocalM1.class:1","Warn: binary detected: testData/classes/pkg/PrivateClasses$1NonCapturingLocalM2.class:1","Warn: binary detected: testData/classes/pkg/PrivateClasses$2$1.class:1","Warn: binary detected: testData/classes/pkg/PrivateClasses$2$1CapturingLocalR1.class:1","Warn: binary detected: testData/classes/pkg/PrivateClasses$2$1NonCapturingLocalR2.class:1","Warn: binary detected: testData/classes/pkg/PrivateClasses$2$2.class:1","Warn: binary detected: testData/classes/pkg/PrivateClasses$2.class:1","Warn: binary detected: testData/classes/pkg/PrivateClasses$3.class:1","Warn: binary detected: testData/classes/pkg/PrivateClasses$4.class:1","Warn: binary detected: testData/classes/pkg/PrivateClasses$5.class:1","Warn: binary detected: testData/classes/pkg/PrivateClasses$6.class:1","Warn: binary detected: testData/classes/pkg/PrivateClasses$Callable.class:1","Warn: binary detected: testData/classes/pkg/PrivateClasses.class:1","Warn: binary detected: testData/classes/pkg/R.class:1","Warn: binary detected: testData/classes/pkg/Shadow.class:1","Warn: binary detected: testData/classes/pkg/SharedName1.class:1","Warn: binary detected: testData/classes/pkg/SharedName2.class:1","Warn: binary detected: testData/classes/pkg/SharedName3.class:1","Warn: binary detected: testData/classes/pkg/SharedName4.class:1","Warn: binary detected: testData/classes/pkg/SharedName5.class:1","Warn: binary detected: testData/classes/pkg/SwitchOnStatic.class:1","Warn: binary detected: testData/classes/pkg/TestAbstractMethods.class:1","Warn: binary detected: testData/classes/pkg/TestAccessReplace$Inner.class:1","Warn: binary detected: testData/classes/pkg/TestAccessReplace.class:1","Warn: binary detected: testData/classes/pkg/TestAmbiguousCall.class:1","Warn: binary detected: testData/classes/pkg/TestAmbiguousCallWithDebugInfo.class:1","Warn: binary detected: testData/classes/pkg/TestAnnotationsForParametersWithNestedClass$RunCallback.class:1","Warn: binary detected: testData/classes/pkg/TestAnnotationsForParametersWithNestedClass.class:1","Warn: binary detected: testData/classes/pkg/TestAnonymousClass$1.class:1","Warn: binary detected: testData/classes/pkg/TestAnonymousClass$2.class:1","Warn: binary detected: testData/classes/pkg/TestAnonymousClass$3.class:1","Warn: binary detected: testData/classes/pkg/TestAnonymousClass$4.class:1","Warn: binary detected: testData/classes/pkg/TestAnonymousClass$5.class:1","Warn: binary detected: testData/classes/pkg/TestAnonymousClass$6.class:1","Warn: binary detected: testData/classes/pkg/TestAnonymousClass$7.class:1","Warn: binary detected: testData/classes/pkg/TestAnonymousClass$8.class:1","Warn: binary detected: testData/classes/pkg/TestAnonymousClass$I.class:1","Warn: binary detected: testData/classes/pkg/TestAnonymousClass$Inner$1.class:1","Warn: binary detected: testData/classes/pkg/TestAnonymousClass$Inner.class:1","Warn: binary detected: testData/classes/pkg/TestAnonymousClass$InnerRecursive.class:1","Warn: binary detected: testData/classes/pkg/TestAnonymousClass.class:1","Warn: binary detected: testData/classes/pkg/TestAnonymousClassConstructor$1.class:1","Warn: binary detected: testData/classes/pkg/TestAnonymousClassConstructor$10.class:1","Warn: binary detected: testData/classes/pkg/TestAnonymousClassConstructor$11.class:1","Warn: binary detected: testData/classes/pkg/TestAnonymousClassConstructor$12.class:1","Warn: binary detected: testData/classes/pkg/TestAnonymousClassConstructor$2.class:1","Warn: binary detected: testData/classes/pkg/TestAnonymousClassConstructor$3.class:1","Warn: binary detected: testData/classes/pkg/TestAnonymousClassConstructor$4.class:1","Warn: binary detected: testData/classes/pkg/TestAnonymousClassConstructor$5.class:1","Warn: binary detected: testData/classes/pkg/TestAnonymousClassConstructor$6.class:1","Warn: binary detected: testData/classes/pkg/TestAnonymousClassConstructor$7.class:1","Warn: binary detected: testData/classes/pkg/TestAnonymousClassConstructor$8.class:1","Warn: binary detected: testData/classes/pkg/TestAnonymousClassConstructor$9.class:1","Warn: binary detected: testData/classes/pkg/TestAnonymousClassConstructor$InnerPrivate.class:1","Warn: binary detected: testData/classes/pkg/TestAnonymousClassConstructor$InnerPrivateString.class:1","Warn: binary detected: testData/classes/pkg/TestAnonymousClassConstructor$InnerPublic.class:1","Warn: binary detected: testData/classes/pkg/TestAnonymousClassConstructor$InnerPublicString.class:1","Warn: binary detected: testData/classes/pkg/TestAnonymousClassConstructor$InnerStaticPrivate.class:1","Warn: binary detected: testData/classes/pkg/TestAnonymousClassConstructor$InnerStaticPrivateString.class:1","Warn: binary detected: testData/classes/pkg/TestAnonymousClassConstructor$InnerStaticPublic.class:1","Warn: binary detected: testData/classes/pkg/TestAnonymousClassConstructor$InnerStaticPublicString.class:1","Warn: binary detected: testData/classes/pkg/TestAnonymousClassConstructor.class:1","Warn: binary detected: testData/classes/pkg/TestAnonymousParamNames$1.class:1","Warn: binary detected: testData/classes/pkg/TestAnonymousParamNames$Clazz.class:1","Warn: binary detected: testData/classes/pkg/TestAnonymousParamNames.class:1","Warn: binary detected: testData/classes/pkg/TestAnonymousParams$1.class:1","Warn: binary detected: testData/classes/pkg/TestAnonymousParams.class:1","Warn: binary detected: testData/classes/pkg/TestAnonymousSignature$1.class:1","Warn: binary detected: testData/classes/pkg/TestAnonymousSignature$2.class:1","Warn: binary detected: testData/classes/pkg/TestAnonymousSignature.class:1","Warn: binary detected: testData/classes/pkg/TestAsserts.class:1","Warn: binary detected: testData/classes/pkg/TestClashName.class:1","Warn: binary detected: testData/classes/pkg/TestClashNameIface.class:1","Warn: binary detected: testData/classes/pkg/TestClashNameParent.class:1","Warn: binary detected: testData/classes/pkg/TestClassCast.class:1","Warn: binary detected: testData/classes/pkg/TestClassFields$Inner.class:1","Warn: binary detected: testData/classes/pkg/TestClassFields.class:1","Warn: binary detected: testData/classes/pkg/TestClassLambda.class:1","Warn: binary detected: testData/classes/pkg/TestClassLoop.class:1","Warn: binary detected: testData/classes/pkg/TestClassNestedInitializer$1.class:1","Warn: binary detected: testData/classes/pkg/TestClassNestedInitializer.class:1","Warn: binary detected: testData/classes/pkg/TestClassSimpleBytecodeMapping$1.class:1","Warn: binary detected: testData/classes/pkg/TestClassSimpleBytecodeMapping$InnerClass.class:1","Warn: binary detected: testData/classes/pkg/TestClassSimpleBytecodeMapping$InnerClass2.class:1","Warn: binary detected: testData/classes/pkg/TestClassSimpleBytecodeMapping.class:1","Warn: binary detected: testData/classes/pkg/TestClassSwitch.class:1","Warn: binary detected: testData/classes/pkg/TestClassTypes.class:1","Warn: binary detected: testData/classes/pkg/TestClassVar.class:1","Warn: binary detected: testData/classes/pkg/TestCodeConstructs.class:1","Warn: binary detected: testData/classes/pkg/TestComplexInstanceOfRecordPatternJavac$R.class:1","Warn: binary detected: testData/classes/pkg/TestComplexInstanceOfRecordPatternJavac$R2.class:1","Warn: binary detected: testData/classes/pkg/TestComplexInstanceOfRecordPatternJavac.class:1","Warn: binary detected: testData/classes/pkg/TestCompoundAssignment.class:1","Warn: binary detected: testData/classes/pkg/TestConstType.class:1","Warn: binary detected: testData/classes/pkg/TestConstants.class:1","Warn: binary detected: testData/classes/pkg/TestConstantsAsIs$A.class:1","Warn: binary detected: testData/classes/pkg/TestConstantsAsIs.class:1","Warn: binary detected: testData/classes/pkg/TestConstructorReference.class:1","Warn: binary detected: testData/classes/pkg/TestCustomSyntheticRecords$CustomCompactConstructor.class:1","Warn: binary detected: testData/classes/pkg/TestCustomSyntheticRecords$CustomFullConstructor.class:1","Warn: binary detected: testData/classes/pkg/TestCustomSyntheticRecords$CustomGetter.class:1","Warn: binary detected: testData/classes/pkg/TestCustomSyntheticRecords.class:1","Warn: binary detected: testData/classes/pkg/TestDebugSymbols.class:1","Warn: binary detected: testData/classes/pkg/TestDeprecations$ByAnno.class:1","Warn: binary detected: testData/classes/pkg/TestDeprecations$ByComment.class:1","Warn: binary detected: testData/classes/pkg/TestDeprecations.class:1","Warn: binary detected: testData/classes/pkg/TestEmptyBlocks.class:1","Warn: binary detected: testData/classes/pkg/TestEnhancedForLoops.class:1","Warn: binary detected: testData/classes/pkg/TestEnum$1.class:1","Warn: binary detected: testData/classes/pkg/TestEnum$2.class:1","Warn: binary detected: testData/classes/pkg/TestEnum$Type.class:1","Warn: binary detected: testData/classes/pkg/TestEnum.class:1","Warn: binary detected: testData/classes/pkg/TestEnumInit$TestEnum.class:1","Warn: binary detected: testData/classes/pkg/TestEnumInit$TestEnum1.class:1","Warn: binary detected: testData/classes/pkg/TestEnumInit$TestEnum2.class:1","Warn: binary detected: testData/classes/pkg/TestEnumInit.class:1","Warn: binary detected: testData/classes/pkg/TestEnumLowLevel$ExampleNestedEnum.class:1","Warn: binary detected: testData/classes/pkg/TestEnumLowLevel.class:1","Warn: binary detected: testData/classes/pkg/TestExtendingSubclass$Subclass1.class:1","Warn: binary detected: testData/classes/pkg/TestExtendingSubclass$Subclass2.class:1","Warn: binary detected: testData/classes/pkg/TestExtendingSubclass.class:1","Warn: binary detected: testData/classes/pkg/TestExtendsList.class:1","Warn: binary detected: testData/classes/pkg/TestFieldSingleAccess.class:1","Warn: binary detected: testData/classes/pkg/TestFinally$A.class:1","Warn: binary detected: testData/classes/pkg/TestFinally.class:1","Warn: binary detected: testData/classes/pkg/TestGenericArgs.class:1","Warn: binary detected: testData/classes/pkg/TestGenerics$Maps.class:1","Warn: binary detected: testData/classes/pkg/TestGenerics.class:1","Warn: binary detected: testData/classes/pkg/TestGroovyClass$Inner.class:1","Warn: binary detected: testData/classes/pkg/TestGroovyClass$Nested.class:1","Warn: binary detected: testData/classes/pkg/TestGroovyClass$_closure1.class:1","Warn: binary detected: testData/classes/pkg/TestGroovyClass$_closure2.class:1","Warn: binary detected: testData/classes/pkg/TestGroovyClass.class:1","Warn: binary detected: testData/classes/pkg/TestGroovyTrait$Trait$FieldHelper.class:1","Warn: binary detected: testData/classes/pkg/TestGroovyTrait$Trait$Helper.class:1","Warn: binary detected: testData/classes/pkg/TestGroovyTrait.class:1","Warn: binary detected: testData/classes/pkg/TestHelloWorld.class:1","Warn: binary detected: testData/classes/pkg/TestIffSimplification.class:1","Warn: binary detected: testData/classes/pkg/TestIllegalVarName.class:1","Warn: binary detected: testData/classes/pkg/TestInUse.class:1","Warn: binary detected: testData/classes/pkg/TestInheritanceChainCycle.class:1","Warn: binary detected: testData/classes/pkg/TestInitGeneric$A.class:1","Warn: binary detected: testData/classes/pkg/TestInitGeneric$B.class:1","Warn: binary detected: testData/classes/pkg/TestInitGeneric$C.class:1","Warn: binary detected: testData/classes/pkg/TestInitGeneric.class:1","Warn: binary detected: testData/classes/pkg/TestInner2$1.class:1","Warn: binary detected: testData/classes/pkg/TestInner2$Another.class:1","Warn: binary detected: testData/classes/pkg/TestInner2$Another2.class:1","Warn: binary detected: testData/classes/pkg/TestInner2$AnotherStatic.class:1","Warn: binary detected: testData/classes/pkg/TestInner2$AnotherStatic2.class:1","Warn: binary detected: testData/classes/pkg/TestInner2.class:1","Warn: binary detected: testData/classes/pkg/TestInnerClassConstructor$1.class:1","Warn: binary detected: testData/classes/pkg/TestInnerClassConstructor$Another.class:1","Warn: binary detected: testData/classes/pkg/TestInnerClassConstructor$Inner.class:1","Warn: binary detected: testData/classes/pkg/TestInnerClassConstructor.class:1","Warn: binary detected: testData/classes/pkg/TestInnerLocal$1Inner.class:1","Warn: binary detected: testData/classes/pkg/TestInnerLocal$2Inner.class:1","Warn: binary detected: testData/classes/pkg/TestInnerLocal$Inner1.class:1","Warn: binary detected: testData/classes/pkg/TestInnerLocal$Inner1Static$Inner2Static.class:1","Warn: binary detected: testData/classes/pkg/TestInnerLocal$Inner1Static.class:1","Warn: binary detected: testData/classes/pkg/TestInnerLocal.class:1","Warn: binary detected: testData/classes/pkg/TestInnerSignature$Inner.class:1","Warn: binary detected: testData/classes/pkg/TestInnerSignature$InnerStatic.class:1","Warn: binary detected: testData/classes/pkg/TestInnerSignature.class:1","Warn: binary detected: testData/classes/pkg/TestIntVarMerge.class:1","Warn: binary detected: testData/classes/pkg/TestInterfaceFields.class:1","Warn: binary detected: testData/classes/pkg/TestInterfaceMethods.class:1","Warn: binary detected: testData/classes/pkg/TestInterfaceSuper$Impl.class:1","Warn: binary detected: testData/classes/pkg/TestInterfaceSuper.class:1","Warn: binary detected: testData/classes/pkg/TestInvertedFloatComparison.class:1","Warn: binary detected: testData/classes/pkg/TestJADNaming.class:1","Warn: binary detected: testData/classes/pkg/TestKotlinConstructorKt.class:1","Warn: binary detected: testData/classes/pkg/TestLVT.class:1","Warn: binary detected: testData/classes/pkg/TestLVTComplex$Bob.class:1","Warn: binary detected: testData/classes/pkg/TestLVTComplex.class:1","Warn: binary detected: testData/classes/pkg/TestLVTScoping.class:1","Warn: binary detected: testData/classes/pkg/TestLambda.class:1","Warn: binary detected: testData/classes/pkg/TestLambdaParams.class:1","Warn: binary detected: testData/classes/pkg/TestLineNumbersMatch$1.class:1","Warn: binary detected: testData/classes/pkg/TestLocalClass$1Local.class:1","Warn: binary detected: testData/classes/pkg/TestLocalClass.class:1","Warn: binary detected: testData/classes/pkg/TestLocalsNames.class:1","Warn: binary detected: testData/classes/pkg/TestLocalsSignature.class:1","Warn: binary detected: testData/classes/pkg/TestLoopMerging.class:1","Warn: binary detected: testData/classes/pkg/TestMemberAnnotations$A.class:1","Warn: binary detected: testData/classes/pkg/TestMemberAnnotations.class:1","Warn: binary detected: testData/classes/pkg/TestMethodParameters$1Local.class:1","Warn: binary detected: testData/classes/pkg/TestMethodParameters$C1.class:1","Warn: binary detected: testData/classes/pkg/TestMethodParameters$C2.class:1","Warn: binary detected: testData/classes/pkg/TestMethodParameters.class:1","Warn: binary detected: testData/classes/pkg/TestMethodParametersAttr$1Local.class:1","Warn: binary detected: testData/classes/pkg/TestMethodParametersAttr$C1.class:1","Warn: binary detected: testData/classes/pkg/TestMethodParametersAttr$C2.class:1","Warn: binary detected: testData/classes/pkg/TestMethodParametersAttr$C3.class:1","Warn: binary detected: testData/classes/pkg/TestMethodParametersAttr$C4.class:1","Warn: binary detected: testData/classes/pkg/TestMethodParametersAttr$E1.class:1","Warn: binary detected: testData/classes/pkg/TestMethodParametersAttr$I1.class:1","Warn: binary detected: testData/classes/pkg/TestMethodParametersAttr.class:1","Warn: binary detected: testData/classes/pkg/TestMethodReferenceLetterClass.class:1","Warn: binary detected: testData/classes/pkg/TestMethodReferenceSameName$R1.class:1","Warn: binary detected: testData/classes/pkg/TestMethodReferenceSameName.class:1","Warn: binary detected: testData/classes/pkg/TestMissingConstructorCallBad.class:1","Warn: binary detected: testData/classes/pkg/TestMissingConstructorCallGood.class:1","Warn: binary detected: testData/classes/pkg/TestNamedSuspendFun2Kt$foo2$1.class:1","Warn: binary detected: testData/classes/pkg/TestNamedSuspendFun2Kt.class:1","Warn: binary detected: testData/classes/pkg/TestNestedCalls.class:1","Warn: binary detected: testData/classes/pkg/TestNestedInheritor$Child$NestedChild.class:1","Warn: binary detected: testData/classes/pkg/TestNestedInheritor$Child.class:1","Warn: binary detected: testData/classes/pkg/TestNestedInheritor$Parent$NestedParent.class:1","Warn: binary detected: testData/classes/pkg/TestNestedInheritor$Parent.class:1","Warn: binary detected: testData/classes/pkg/TestNestedInheritor.class:1","Warn: binary detected: testData/classes/pkg/TestNotNullRecord.class:1","Warn: binary detected: testData/classes/pkg/TestPPMM.class:1","Warn: binary detected: testData/classes/pkg/TestParameterizedTypes$Inner.class:1","Warn: binary detected: testData/classes/pkg/TestParameterizedTypes.class:1","Warn: binary detected: testData/classes/pkg/TestPop2OneDoublePop2.class:1","Warn: binary detected: testData/classes/pkg/TestPop2OneLongPop2.class:1","Warn: binary detected: testData/classes/pkg/TestPop2TwoIntPop2.class:1","Warn: binary detected: testData/classes/pkg/TestPop2TwoIntTwoPop.class:1","Warn: binary detected: testData/classes/pkg/TestPrimitiveNarrowing.class:1","Warn: binary detected: testData/classes/pkg/TestPrimitives.class:1","Warn: binary detected: testData/classes/pkg/TestPrivateEmptyConstructor.class:1","Warn: binary detected: testData/classes/pkg/TestShadowing.class:1","Warn: binary detected: testData/classes/pkg/TestShadowingSuperClass$Calendar$Builder.class:1","Warn: binary detected: testData/classes/pkg/TestShadowingSuperClass$Calendar.class:1","Warn: binary detected: testData/classes/pkg/TestShadowingSuperClass.class:1","Warn: binary detected: testData/classes/pkg/TestSimpleInstanceOfRecordPatternJavac$R.class:1","Warn: binary detected: testData/classes/pkg/TestSimpleInstanceOfRecordPatternJavac.class:1","Warn: binary detected: testData/classes/pkg/TestStaticNameClash.class:1","Warn: binary detected: testData/classes/pkg/TestStringConcat.class:1","Warn: binary detected: testData/classes/pkg/TestStringLiterals.class:1","Warn: binary detected: testData/classes/pkg/TestSuperInner$Inner2.class:1","Warn: binary detected: testData/classes/pkg/TestSuperInner.class:1","Warn: binary detected: testData/classes/pkg/TestSuperInnerBase$Inner.class:1","Warn: binary detected: testData/classes/pkg/TestSuperInnerBase.class:1","Warn: binary detected: testData/classes/pkg/TestSuspendLambdaKt$sl1$1.class:1","Warn: binary detected: testData/classes/pkg/TestSuspendLambdaKt.class:1","Warn: binary detected: testData/classes/pkg/TestSwitchClassReferencesEcj.class:1","Warn: binary detected: testData/classes/pkg/TestSwitchClassReferencesFastExitEcj.class:1","Warn: binary detected: testData/classes/pkg/TestSwitchClassReferencesFastExitJavac.class:1","Warn: binary detected: testData/classes/pkg/TestSwitchClassReferencesJavac.class:1","Warn: binary detected: testData/classes/pkg/TestSwitchGuarded2Javac.class:1","Warn: binary detected: testData/classes/pkg/TestSwitchGuardedEcj.class:1","Warn: binary detected: testData/classes/pkg/TestSwitchGuardedJavac.class:1","Warn: binary detected: testData/classes/pkg/TestSwitchNestedDeconstructionsJavac$R1.class:1","Warn: binary detected: testData/classes/pkg/TestSwitchNestedDeconstructionsJavac$R2.class:1","Warn: binary detected: testData/classes/pkg/TestSwitchNestedDeconstructionsJavac.class:1","Warn: binary detected: testData/classes/pkg/TestSwitchOnEnum$1.class:1","Warn: binary detected: testData/classes/pkg/TestSwitchOnEnum$Example$A.class:1","Warn: binary detected: testData/classes/pkg/TestSwitchOnEnum$Example$B.class:1","Warn: binary detected: testData/classes/pkg/TestSwitchOnEnum$Example.class:1","Warn: binary detected: testData/classes/pkg/TestSwitchOnEnum.class:1","Warn: binary detected: testData/classes/pkg/TestSwitchOnEnumEclipse$Example$A.class:1","Warn: binary detected: testData/classes/pkg/TestSwitchOnEnumEclipse$Example$B.class:1","Warn: binary detected: testData/classes/pkg/TestSwitchOnEnumEclipse$Example.class:1","Warn: binary detected: testData/classes/pkg/TestSwitchOnEnumEclipse.class:1","Warn: binary detected: testData/classes/pkg/TestSwitchOnStringsEcj.class:1","Warn: binary detected: testData/classes/pkg/TestSwitchOnStringsJavac.class:1","Warn: binary detected: testData/classes/pkg/TestSwitchRules.class:1","Warn: binary detected: testData/classes/pkg/TestSwitchSimpleReferencesJavac$Numbers.class:1","Warn: binary detected: testData/classes/pkg/TestSwitchSimpleReferencesJavac.class:1","Warn: binary detected: testData/classes/pkg/TestSwitchWithDeconstructionsWithoutNestedJavac$R1.class:1","Warn: binary detected: testData/classes/pkg/TestSwitchWithDeconstructionsWithoutNestedJavac.class:1","Warn: binary detected: testData/classes/pkg/TestSwitchWrapReturn.class:1","Warn: binary detected: testData/classes/pkg/TestSwitchWrapReturnJavac$S$A.class:1","Warn: binary detected: testData/classes/pkg/TestSwitchWrapReturnJavac$S$B.class:1","Warn: binary detected: testData/classes/pkg/TestSwitchWrapReturnJavac$S$C.class:1","Warn: binary detected: testData/classes/pkg/TestSwitchWrapReturnJavac$S.class:1","Warn: binary detected: testData/classes/pkg/TestSwitchWrapReturnJavac.class:1","Warn: binary detected: testData/classes/pkg/TestSynchronizedMapping.class:1","Warn: binary detected: testData/classes/pkg/TestSynchronizedUnprotected.class:1","Warn: binary detected: testData/classes/pkg/TestSyntheticAccess$Assigner.class:1","Warn: binary detected: testData/classes/pkg/TestSyntheticAccess$Incrementer.class:1","Warn: binary detected: testData/classes/pkg/TestSyntheticAccess.class:1","Warn: binary detected: testData/classes/pkg/TestThrowException$1.class:1","Warn: binary detected: testData/classes/pkg/TestThrowException.class:1","Warn: binary detected: testData/classes/pkg/TestTryCatchFinally.class:1","Warn: binary detected: testData/classes/pkg/TestTryCatchFinallyJsrRet.class:1","Warn: binary detected: testData/classes/pkg/TestTryCatchFinallyMismatched.class:1","Warn: binary detected: testData/classes/pkg/TestTryWithResources.class:1","Warn: binary detected: testData/classes/pkg/TestUnionType.class:1","Warn: binary detected: testData/classes/pkg/TestVarArgCalls.class:1","Warn: binary detected: testData/classes/pkg/TestVarType.class:1","Warn: binary detected: testData/classes/pkg/TryToPreserveCast.class:1","Warn: binary detected: testData/classes/pkg/TypeAnnotations$MixA.class:1","Warn: binary detected: testData/classes/pkg/TypeAnnotations$TA.class:1","Warn: binary detected: testData/classes/pkg/TypeAnnotations.class:1","Warn: binary detected: testData/classes/pkg/package-info.class:1","Warn: binary detected: testData/classes/records/TestHideConstructorRecordAnno.class:1","Warn: binary detected: testData/classes/records/TestHideConstructorRecordAnnoComponentType.class:1","Warn: binary detected: testData/classes/records/TestHideConstructorRecordAnnoConstructor.class:1","Warn: binary detected: testData/classes/records/TestHideConstructorRecordAnnoGetter.class:1","Warn: binary detected: testData/classes/records/TestHideConstructorRecordAnnoGetterType.class:1","Warn: binary detected: testData/classes/records/TestHideConstructorRecordAnnoParameterAndType.class:1","Warn: binary detected: testData/classes/records/TestHideConstructorRecordAnnoParameterType.class:1","Warn: binary detected: testData/classes/records/TestHideConstructorRecordDifferentTypes.class:1","Warn: binary detected: testData/classes/records/TestHideConstructorRecordEmpty.class:1","Warn: binary detected: testData/classes/records/TestHideConstructorRecordSimple.class:1","Warn: binary detected: testData/classes/records/TestHideConstructorRecordVararg.class:1","Warn: binary detected: testData/classes/records/TestRecordAnno.class:1","Warn: binary detected: testData/classes/records/TestRecordEmpty.class:1","Warn: binary detected: testData/classes/records/TestRecordGenericVararg.class:1","Warn: binary detected: testData/classes/records/TestRecordSimple.class:1","Warn: binary detected: testData/classes/records/TestRecordVararg.class:1","Warn: binary detected: testData/classes/sealed/ClassExtends.class:1","Warn: binary detected: testData/classes/sealed/ClassImplements.class:1","Warn: binary detected: testData/classes/sealed/ClassNonSealed.class:1","Warn: binary detected: testData/classes/sealed/ClassNonSealedExtendsImplements.class:1","Warn: binary detected: testData/classes/sealed/EnumWithOverride$1.class:1","Warn: binary detected: testData/classes/sealed/EnumWithOverride.class:1","Warn: binary detected: testData/classes/sealed/InterfaceNonSealed.class:1","Warn: binary detected: testData/classes/sealed/RootWithClassInner$Inner.class:1","Warn: binary detected: testData/classes/sealed/RootWithClassInner.class:1","Warn: binary detected: testData/classes/sealed/RootWithClassOuter.class:1","Warn: binary detected: testData/classes/sealed/RootWithInterfaceInner$Inner.class:1","Warn: binary detected: testData/classes/sealed/RootWithInterfaceInner.class:1","Warn: binary detected: testData/classes/sealed/RootWithInterfaceInnerAndOuter$Inner.class:1","Warn: binary detected: testData/classes/sealed/RootWithInterfaceInnerAndOuter.class:1","Warn: binary detected: testData/classes/sealed/RootWithInterfaceOuter.class:1","Warn: binary detected: testData/classes/sealed/bar/BarClassExtends.class:1","Warn: binary detected: testData/classes/sealed/foo/RootWithModule.class:1","Warn: binary detected: testData/classes/typeAnnotations/A.class:1","Warn: binary detected: testData/classes/typeAnnotations/ArrayNestedTypeAnnotations.class:1","Warn: binary detected: testData/classes/typeAnnotations/ArrayTypeAnnotations.class:1","Warn: binary detected: testData/classes/typeAnnotations/B.class:1","Warn: binary detected: testData/classes/typeAnnotations/Bar.class:1","Warn: binary detected: testData/classes/typeAnnotations/BarGeneric.class:1","Warn: binary detected: testData/classes/typeAnnotations/C.class:1","Warn: binary detected: testData/classes/typeAnnotations/ClassSuperTypeAnnotations.class:1","Warn: binary detected: testData/classes/typeAnnotations/D.class:1","Warn: binary detected: testData/classes/typeAnnotations/E.class:1","Warn: binary detected: testData/classes/typeAnnotations/F.class:1","Warn: binary detected: testData/classes/typeAnnotations/Foo.class:1","Warn: binary detected: testData/classes/typeAnnotations/GenericArrayNestedTypeAnnotations.class:1","Warn: binary detected: testData/classes/typeAnnotations/GenericArrayTypeAnnotations.class:1","Warn: binary detected: testData/classes/typeAnnotations/GenericNestedTypeAnnotations.class:1","Warn: binary detected: testData/classes/typeAnnotations/GenericTypeAnnotations.class:1","Warn: binary detected: testData/classes/typeAnnotations/InterfaceSuperTypeAnnotations.class:1","Warn: binary detected: testData/classes/typeAnnotations/K.class:1","Warn: binary detected: testData/classes/typeAnnotations/L.class:1","Warn: binary detected: testData/classes/typeAnnotations/MemberDeclarationTypeAnnotations.class:1","Warn: binary detected: testData/classes/typeAnnotations/NestedTypeAnnotations.class:1","Warn: binary detected: testData/classes/typeAnnotations/NestedTypeAnnotationsParameters.class:1","Warn: binary detected: testData/classes/typeAnnotations/P$Q$R.class:1","Warn: binary detected: testData/classes/typeAnnotations/P$Q.class:1","Warn: binary detected: testData/classes/typeAnnotations/P.class:1","Warn: binary detected: testData/classes/typeAnnotations/ParentInterface.class:1","Warn: binary detected: testData/classes/typeAnnotations/S$T$U.class:1","Warn: binary detected: testData/classes/typeAnnotations/S$T.class:1","Warn: binary detected: testData/classes/typeAnnotations/S.class:1","Warn: binary detected: testData/classes/typeAnnotations/SomeFunInterface.class:1","Warn: binary detected: testData/classes/typeAnnotations/T$Y$U$I$O.class:1","Warn: binary detected: testData/classes/typeAnnotations/T$Y$U$I.class:1","Warn: binary detected: testData/classes/typeAnnotations/T$Y$U.class:1","Warn: binary detected: testData/classes/typeAnnotations/T$Y.class:1","Warn: binary detected: testData/classes/typeAnnotations/T.class:1","Warn: binary detected: testData/classes/typeAnnotations/V$U$T.class:1","Warn: binary detected: testData/classes/typeAnnotations/V$U.class:1","Warn: binary detected: testData/classes/typeAnnotations/V.class:1","Warn: binary detected: testData/classes/typeAnnotations/Z$Y$X$W.class:1","Warn: binary detected: testData/classes/typeAnnotations/Z$Y$X.class:1","Warn: binary detected: testData/classes/typeAnnotations/Z$Y.class:1","Warn: binary detected: testData/classes/typeAnnotations/Z.class:1","Warn: binary detected: testData/classes/v11/TestInnerClassConstructor$1.class:1","Warn: binary detected: testData/classes/v11/TestInnerClassConstructor$Another.class:1","Warn: binary detected: testData/classes/v11/TestInnerClassConstructor$Inner.class:1","Warn: binary detected: testData/classes/v11/TestInnerClassConstructor.class:1","Warn: binary detected: testData/kt25937.jar:1","Warn: binary detected: testData/obfuscated.jar:1"],"documentation":{"short":"Determines if the project has generated executable (binary) artifacts in the source repository.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#binary-artifacts"}}]},"last_synced_at":"2025-08-18T19:25:52.364Z","repository_id":21429186,"created_at":"2025-08-18T19:25:52.364Z","updated_at":"2025-08-18T19:25:52.364Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":277458663,"owners_count":25821319,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-09-29T02:00:09.175Z","response_time":84,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["decompiler","java","reverse-engineering"],"created_at":"2025-09-29T23:02:06.415Z","updated_at":"2025-09-29T23:02:56.161Z","avatar_url":"https://github.com/JetBrains.png","language":"Java","readme":"# Fernflower\n\nA decompiler from Java bytecode to Java.\n\n## About Fernflower\n\nFernflower is the first actually working analytical decompiler for Java\nand probably for a high-level programming language in general.\nNaturally, it is still under development.\nPlease send your bug reports and improvement suggestions to the [issue tracker] (in subsystem `Java. Decompiler. Engine`).\n\n### Naming\n\nThe correct name is Fernflower, not FernFlower.\n\n### Credits\n\n[Fernflower was originally written by Stiver](https://blog.jetbrains.com/idea/2024/11/in-memory-of-stiver).\n\nFernflower includes some patches from [ForgeFlower](https://github.com/MinecraftForge/ForgeFlower).\nSincere appreciation is extended to the maintainers of ForgeFlower for their valuable contributions and enhancements.\n\nA mirror of this repository has been maintained for many years by [Andrew McRae](https://github.com/fesh0r)\nuntil JetBrains offered to take over.\nSincere appreciation is extended to Andrew for his work maintaining the mirror.\n\n### License\n\nFernflower is licensed under the [Apache License Version 2.0](http://www.apache.org/licenses/LICENSE-2.0).\n\n## Usage\n\n### IntelliJ\n\nThe Fernflower IDE plugin is bundled in IntelliJ IDEA.\nOpen any `.class` file and you should see the decompiled Java source code: this is Fernflower in action.\n\nThe plugin is also open-source and [can be found here](https://github.com/JetBrains/intellij-community/tree/master/plugins/java-decompiler/plugin). \n\n### Running from the command line\n\n```console\njava -jar fernflower.jar [-\u003coption\u003e=\u003cvalue\u003e]* [\u003csource\u003e]+ \u003cdestination\u003e`\n```\n\n`*` means zero or more times\n\n`+` means one or more times\n\n`\u003csource\u003e`: file or directory with files to be decompiled.\nDirectories are recursively scanned.\nAllowed file extensions are class, zip and jar.\nSources prefixed with -e= mean \"library\" files that won't be decompiled but taken into account when analyzing\nrelationships between classes or methods.\nEspecially renaming of identifiers (see the `ren` option) can benefit from information about external classes.\n\n`\u003cdestination\u003e`: destination directory to place the resulting Java source into\n\n`\u003coption\u003e=\u003cvalue\u003e`: a command-line option with the corresponding value (see \"Command-line options\" below).\n\n### Examples\n\n```console\njava -jar fernflower.jar -hes=0 -hdc=0 c:\\Temp\\binary\\ -e=c:\\Java\\rt.jar c:\\Temp\\source\\\n```\n\n```console\njava -jar fernflower.jar -dgs=1 c:\\Temp\\binary\\library.jar c:\\Temp\\binary\\Boot.class c:\\Temp\\source\\\n```\n\n### Command-line options\n\nExcept for `mpm` and `urc` the value of 1 means the option is activated, 0 - deactivated.\nThe default value, if any, is given between parentheses.\n\nTypically, the following options will be changed by user, if any: hes, hdc, dgs, mpm, ren, urc\nThe rest of options can be left as they are: they are aimed at professional reverse engineers.\n\n- `rbr` (1): hide bridge methods\n- `rsy` (0): hide synthetic class members\n- `din` (1): decompile inner classes\n- `dc4` (1): collapse 1.4 class references\n- `das` (1): decompile assertions\n- `hes` (1): hide empty super invocation\n- `hdc` (1): hide empty default constructor\n- `dgs` (0): decompile generic signatures\n- `ner` (1): assume return not throwing exceptions\n- `den` (1): decompile enumerations\n- `rgn` (1): remove `getClass()` invocation, when it is part of a qualified new statement\n- `lit` (0): output numeric literals \"as-is\"\n- `asc` (0): encode non-ASCII characters in string and character literals as Unicode escapes\n- `bto` (1): interpret int 1 as boolean true (workaround to a compiler bug)\n- `nns` (0): allow for not set synthetic attribute (workaround to a compiler bug)\n- `uto` (1): consider nameless types as `java.lang.Object` (workaround to a compiler architecture flaw)\n- `udv` (1): reconstruct variable names from debug information, if present\n- `ump` (1): reconstruct parameter names from corresponding attributes, if present\n- `rer` (1): remove empty exception ranges\n- `fdi` (1): de-inline finally structures\n- `mpm` (0): maximum allowed processing time per decompiled method, in seconds. 0 means no upper limit\n- `ren` (0): rename ambiguous (resp. obfuscated) classes and class elements\n- `urc` (-): full name of a user-supplied class implementing `IIdentifierRenamer` interface. It is used to determine which class identifiers should be renamed and provides new identifier names (see \"Renaming identifiers\")\n- `inn` (1): check for IntelliJ IDEA-specific @NotNull annotation and remove inserted code if found\n- `lac` (0): decompile lambda expressions to anonymous classes\n- `nls` (0): define a new line character to be used for output. 0 - `'\\r\\n'` (Windows), 1 - `'\\n'` (Unix), default is OS-dependent\n- `ind`: indentation string (default is 3 spaces)\n- `crp` (0): use record patterns where it is possible\n- `cps` (0): use switch with patterns where it is possible\n- `log` (INFO): a logging level, possible values are TRACE, INFO, WARN, ERROR\n- `iec` (0): include the entire classpath in context when decompiling\n- `isl` (1): inline simple lambda expressions\n- `ucrc` (1): hide unnecessary record constructor and getters\n- `cci` (1): check if resource in try-with-resources actually implements `AutoCloseable` interface\n- `jvn` (0): overwrite any local variable names with JAD style names\n- `jpr` (0): include parameter names in JAD naming\n\n### Renaming identifiers\n\nSome obfuscators give classes and their member elements short, meaningless and above all ambiguous names. Recompiling of such\ncode leads to a great number of conflicts. Therefore, it is advisable to let the decompiler rename elements in its turn,\nensuring uniqueness of each identifier.\n\nOption `ren` (i.e. `-ren=1`) activates renaming functionality. The default renaming strategy goes as follows:\n\n- rename an element if its name is a reserved word or is shorter than 3 characters\n- new names are built according to a simple pattern: (class|method|field)_\\\u003cconsecutive unique number\u003e  \n  You can overwrite these rules by providing your own implementation of the 4 key methods invoked by the decompiler while renaming. Simply\n  pass a class that implements `org.jetbrains.java.decompiler.main.extern.IMemberIdentifierRenamer` in the option `urc`\n  (e.g. -urc=com.example.MyRenamer) to Fernflower. The class must be available on the application classpath.\n\nThe meaning of each method should be clear from naming: toBeRenamed determine whether the element will be renamed, while the other three\nprovide new names for classes, methods and fields respectively.\n\n## Development\n\nBuild an executable start-up script:\n\n```console\n./gradlew :installDist\n```\n\nThe startup script is generated in `build/install/engine/bin`.\n\n[issue tracker]: https://youtrack.jetbrains.com/newIssue?project=IDEA\u0026clearDraft=true\u0026c=Subsystem%20Java.%20Decompiler.%20Engine\n","funding_links":[],"categories":["Java"],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FJetBrains%2Ffernflower","html_url":"https://awesome.ecosyste.ms/projects/github.com%2FJetBrains%2Ffernflower","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FJetBrains%2Ffernflower/lists"}