Sample

int-a26692c823dc-I09

Select one of ten low-readability unrelated code templates per class

Matched original source

Lines45

Scores

MethodScoreScale
Posnett00–1; higher is more readable
Scalabrino0.9460–1; higher is more readable
Dorn0.5590–1; higher is more readable
Mi0.2750–1; higher is more readable
LLOC2Logical lines; fewer is more readable
DeepSeek V4 Pro17.330–20; mean of three runs
GPT-6.1 Sol180–20; mean of three runs
BTTF0.6850–1; higher is more readable

Views

Source code

package io.netty.handler.ssl; import io.netty.internal.tcnative.SSLPrivateKeyMethod; import io.netty.util.internal.UnstableApi; import javax.net.ssl.SSLEngine; /** * Allow to customize private key signing / decrypting (when using RSA). Only supported when using BoringSSL atm. */ @UnstableApi public interface OpenSslPrivateKeyMethod { int SSL_SIGN_RSA_PKCS1_SHA1 = SSLPrivateKeyMethod.SSL_SIGN_RSA_PKCS1_SHA1; int SSL_SIGN_RSA_PKCS1_SHA256 = SSLPrivateKeyMethod.SSL_SIGN_RSA_PKCS1_SHA256; int SSL_SIGN_RSA_PKCS1_SHA384 = SSLPrivateKeyMethod.SSL_SIGN_RSA_PKCS1_SHA384; int SSL_SIGN_RSA_PKCS1_SHA512 = SSLPrivateKeyMethod.SSL_SIGN_RSA_PKCS1_SHA512; int SSL_SIGN_ECDSA_SHA1 = SSLPrivateKeyMethod.SSL_SIGN_ECDSA_SHA1; int SSL_SIGN_ECDSA_SECP256R1_SHA256 = SSLPrivateKeyMethod.SSL_SIGN_ECDSA_SECP256R1_SHA256; int SSL_SIGN_ECDSA_SECP384R1_SHA384 = SSLPrivateKeyMethod.SSL_SIGN_ECDSA_SECP384R1_SHA384; int SSL_SIGN_ECDSA_SECP521R1_SHA512 = SSLPrivateKeyMethod.SSL_SIGN_ECDSA_SECP521R1_SHA512; int SSL_SIGN_RSA_PSS_RSAE_SHA256 = SSLPrivateKeyMethod.SSL_SIGN_RSA_PSS_RSAE_SHA256; int SSL_SIGN_RSA_PSS_RSAE_SHA384 = SSLPrivateKeyMethod.SSL_SIGN_RSA_PSS_RSAE_SHA384; int SSL_SIGN_RSA_PSS_RSAE_SHA512 = SSLPrivateKeyMethod.SSL_SIGN_RSA_PSS_RSAE_SHA512; int SSL_SIGN_ED25519 = SSLPrivateKeyMethod.SSL_SIGN_ED25519; int SSL_SIGN_RSA_PKCS1_MD5_SHA1 = SSLPrivateKeyMethod.SSL_SIGN_RSA_PKCS1_MD5_SHA1; /** * Signs the input with the given key and returns the signed bytes. * * @param engine the {@link SSLEngine} * @param signatureAlgorithm the algorithm to use for signing * @param input the digest itself * @return the signed data (must not be {@code null}) * @throws Exception thrown if an error is encountered during the signing */ byte[] sign(SSLEngine engine, int signatureAlgorithm, byte[] input) throws Exception; /** * Decrypts the input with the given key and returns the decrypted bytes. * * @param engine the {@link SSLEngine} * @param input the input which should be decrypted * @return the decrypted data (must not be {@code null}) * @throws Exception thrown if an error is encountered during the decrypting */ byte[] decrypt(SSLEngine engine, byte[] input) throws Exception; }

Loading feature diagnosis…

Source regions

Feature contributions

Feature contributions

FeatureValueContribution
(log-odds)
Halstead volumeHow much symbolic information the code contains. It combines the total number of operators and values with the number of distinct ones.965.73−31.869
Source linesThe number of non-empty source lines.45+18
Byte entropyHow varied the bytes in the source text are. Repeated bytes give a lower value; a more even mixture gives a higher value.4.991−7.487

Intercept 8.87 + feature contributions = -12.486 (log-odds).
Score = sigmoid(-12.486) = 0.

Score0.946

Feature contributions

FeatureValueContribution
(log-odds)
Identifier layout (horizontal)How rapidly the visual pattern of identifier characters changes from left to right. It measures spatial frequency, not the meaning of the names.112.978−1.12
Comment layout (horizontal)How rapidly the visual pattern of comment characters changes from left to right.112.913+1.017
Operator visual areaThe share of the code’s visual area occupied by operators such as +, =, and *.0.032+0.633
Comment layout frequencyHow frequently the layout switches between lines containing only comments or whitespace and lines containing code.46−0.592
Indentation frequencyHow rapidly indentation changes from line to line.28+0.231
Number layout frequencyHow rapidly the number of numeric values per line changes through the code.28−0.222
Identifier layout (vertical)How rapidly the visual pattern of identifier characters changes from top to bottom.44.93+0.218

Intercept 0.07 + feature contributions = 0.236 (log-odds).
Score = sigmoid(0.236) = 0.559.

Score0.275
Score2
Run 1

The code is well-structured as a concise interface definition. Constants are logically grouped and consistently formatted, though the list is long. The interface avoids unnecessary nesting and has a clear purpose: defining a custom private key method for SSL operations. Method signatures are concise with clear parameter names and return types. Javadoc comments effectively document intent and behavior. Reading flow is natural, with constants first, then methods, and clear documentation separating them. Minor deductions result from repetitive constant declarations and slight verbosity in Javadoc, but overall readability is high.

Run 2

The code is highly readable. It's a well-structured interface with clear purpose, documented methods, and organized constants. The structure is logical: imports, class-level Javadoc, constants grouped by cryptographic algorithm, then method signatures with thorough documentation. There is no nesting or method body complexity. Constants are derived from SSLPrivateKeyMethod, keeping the code concise and avoiding duplication. Each element is on its own line, making the flow natural and easy to scan. Minor deductions: the interface-level comment should be complete Javadoc with @author/@since, and the long constant list could potentially be grouped with comments for even better scannability, but overall it's clean and maintainable.

Run 3

The code is highly readable. It has a clear, logical structure: imports, interface declaration, constants, then method signatures. Nesting is essentially flat. The intent of the interface and each constant/method is well-documented with Javadoc. Constants are mapped to an internal library, keeping the public API stable while avoiding duplication. Method signatures are concise and use descriptive parameter names. The action granularity is appropriate—each constant is on its own line for clarity. The reading flow is natural, starting from the interface purpose down to method behaviors. Minor deductions: the Javadoc could mention the constant meanings, and the interface-level comment is slightly informal ('atm'), but overall it is concise and does not suffer from unnecessary length.

Run 1

Code Structure: The interface is logically organized into imports, algorithm constants, and documented methods. Nesting: Entirely flat apart from the interface scope, making it easy to scan. Clarity of intent: Descriptive constants, method names, and Javadoc clearly communicate signing and decryption responsibilities, although references to a 'given key' do not explain how that key is supplied. Code length: Concise for its API role; the repetitive constants are justified but visually dense. Action granularity: Each constant or method declaration occupies its own line, with no combined actions. Reading flow: Constants precede operations naturally, and consistent documentation supports smooth reading. Minor weaknesses include missing spacing around the package/import sections, no visual grouping of algorithm families, and informal wording such as 'atm'.

Run 2

Code Structure: The interface is logically organized into imports, algorithm constants, and two documented methods. Nesting: Flat declarations with no nested control flow make scanning easy. Clarity of intent: Descriptive constant names and method documentation clearly communicate signing and decryption responsibilities, although the introductory RSA wording is ambiguous given the non-RSA signing algorithms. Code length: Concise for its purpose; repetitive constants are appropriate API declarations rather than unnecessary verbosity. Action granularity: Each declaration occupies its own line, with no combined actions. Reading flow: Constants followed by operation contracts provide a natural progression. Minor improvements include separating the package and import sections with whitespace, grouping constants by algorithm family, and replacing informal documentation wording such as 'atm.'

Run 3

Code Structure: Clearly organized interface with algorithm constants followed by two documented methods; grouping constants by algorithm family would improve scanning. Nesting: Flat declarations with no nested control flow. Clarity of intent: Descriptive names and parameter/return documentation make signing and decryption responsibilities clear, although the introductory RSA wording is ambiguous given the non-RSA signing constants. Code length: Concise for its API scope; repetitive constant mappings are justified. Action granularity: Each line declares one constant or method, with no combined operations. Reading flow: Natural progression from imports to interface description, constants, and methods. Minor weaknesses include missing spacing between package and imports and informal wording such as 'atm'.