Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[🚀 Feature]: JSpecify Nullness annotations for Java #14291

Open
mk868 opened this issue Jul 22, 2024 · 4 comments
Open

[🚀 Feature]: JSpecify Nullness annotations for Java #14291

mk868 opened this issue Jul 22, 2024 · 4 comments
Labels
help wanted Issues looking for contributions I-enhancement

Comments

@mk868
Copy link
Contributor

mk868 commented Jul 22, 2024

Feature and motivation

I suggest adding JSpecify Nullness annotations to the Selenium framework code.
These annotations allow you to specify which parameters and return values can be null.
I'm aware that information about potential null values are already placed in the JavaDoc, but using annotations will be transparent to IDEs and static code analyzers.
This will give developers better exposure of potential problems with their code in order to avoid NullPointerExceptions.

Using annotations will also improve interoperability with Kotlin.

Links:

Usage example

The annotated method would look like this:

// ...

import org.jspecify.annotations.Nullable;

public interface WebElement extends SearchContext, TakesScreenshot {
// ...

@Nullable String getAttribute(String name);

// ...
}

Then the IDE/static code analyzer will display a warning about unsafe code:

var element = webDriver.findElement(By.tagName("img"));
var cssClasses = element.getAttribute("class").split(" "); // warning here, possible NullPointerException
Copy link

@mk868, thank you for creating this issue. We will troubleshoot it as soon as we can.


Info for maintainers

Triage this issue by using labels.

If information is missing, add a helpful comment and then I-issue-template label.

If the issue is a question, add the I-question label.

If the issue is valid but there is no time to troubleshoot it, consider adding the help wanted label.

If the issue requires changes or fixes from an external project (e.g., ChromeDriver, GeckoDriver, MSEdgeDriver, W3C), add the applicable G-* label, and it will provide the correct link and auto-close the issue.

After troubleshooting the issue, please add the R-awaiting answer label.

Thank you!

@pujagani pujagani added the help wanted Issues looking for contributions label Jul 25, 2024
Copy link

This issue is looking for contributors.

Please comment below or reach out to us through our IRC/Slack/Matrix channels if you are interested.

@mk868
Copy link
Contributor Author

mk868 commented Jul 26, 2024

I can contribute to add these annotations.
Can I just create a Pull Request with changes?
Or Is additional analysis/confirmation needed for this feature by the Selenium team?

@diemol
Copy link
Member

diemol commented Jul 29, 2024

@mk868, yes, please. Focus on small PRs so they can be quickly reviewed and merged. It does not matter if you send many PRs. A PR with 2-3 files changed will be merged rather quickly, but a PR with 20 files changed will take several days.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
help wanted Issues looking for contributions I-enhancement
Projects
None yet
Development

No branches or pull requests

3 participants