Software Open Access

NullAway: Practical Type-Based Null Safety for Java

Subarno Banerjee; Lazaro Clapp; Manu Sridharan


DCAT Export

<?xml version='1.0' encoding='utf-8'?>
<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:adms="http://www.w3.org/ns/adms#" xmlns:cnt="http://www.w3.org/2011/content#" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:dct="http://purl.org/dc/terms/" xmlns:dctype="http://purl.org/dc/dcmitype/" xmlns:dcat="http://www.w3.org/ns/dcat#" xmlns:duv="http://www.w3.org/ns/duv#" xmlns:foaf="http://xmlns.com/foaf/0.1/" xmlns:frapo="http://purl.org/cerif/frapo/" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:gsp="http://www.opengis.net/ont/geosparql#" xmlns:locn="http://www.w3.org/ns/locn#" xmlns:org="http://www.w3.org/ns/org#" xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:prov="http://www.w3.org/ns/prov#" xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#" xmlns:schema="http://schema.org/" xmlns:skos="http://www.w3.org/2004/02/skos/core#" xmlns:vcard="http://www.w3.org/2006/vcard/ns#" xmlns:wdrs="http://www.w3.org/2007/05/powder-s#">
  <rdf:Description rdf:about="https://doi.org/10.5281/zenodo.3267950">
    <rdf:type rdf:resource="http://www.w3.org/ns/dcat#Dataset"/>
    <dct:type rdf:resource="http://purl.org/dc/dcmitype/Software"/>
    <dct:identifier rdf:datatype="http://www.w3.org/2001/XMLSchema#anyURI">https://doi.org/10.5281/zenodo.3267950</dct:identifier>
    <foaf:page rdf:resource="https://doi.org/10.5281/zenodo.3267950"/>
    <dct:creator>
      <rdf:Description>
        <rdf:type rdf:resource="http://xmlns.com/foaf/0.1/Agent"/>
        <foaf:name>Subarno Banerjee</foaf:name>
        <org:memberOf>
          <foaf:Organization>
            <foaf:name>University of Michigan</foaf:name>
          </foaf:Organization>
        </org:memberOf>
      </rdf:Description>
    </dct:creator>
    <dct:creator>
      <rdf:Description>
        <rdf:type rdf:resource="http://xmlns.com/foaf/0.1/Agent"/>
        <foaf:name>Lazaro Clapp</foaf:name>
        <org:memberOf>
          <foaf:Organization>
            <foaf:name>Uber Technologies, Inc.</foaf:name>
          </foaf:Organization>
        </org:memberOf>
      </rdf:Description>
    </dct:creator>
    <dct:creator>
      <rdf:Description>
        <rdf:type rdf:resource="http://xmlns.com/foaf/0.1/Agent"/>
        <foaf:name>Manu Sridharan</foaf:name>
        <org:memberOf>
          <foaf:Organization>
            <foaf:name>University of California, Riverside</foaf:name>
          </foaf:Organization>
        </org:memberOf>
      </rdf:Description>
    </dct:creator>
    <dct:title>NullAway: Practical Type-Based Null Safety for Java</dct:title>
    <dct:publisher>
      <foaf:Agent>
        <foaf:name>Zenodo</foaf:name>
      </foaf:Agent>
    </dct:publisher>
    <dct:issued rdf:datatype="http://www.w3.org/2001/XMLSchema#gYear">2019</dct:issued>
    <dcat:keyword>static code analysis</dcat:keyword>
    <dcat:keyword>pluggable type systems</dcat:keyword>
    <dcat:keyword>null safety</dcat:keyword>
    <dcat:keyword>java</dcat:keyword>
    <dct:issued rdf:datatype="http://www.w3.org/2001/XMLSchema#date">2019-07-01</dct:issued>
    <dct:language rdf:resource="http://publications.europa.eu/resource/authority/language/ENG"/>
    <owl:sameAs rdf:resource="https://zenodo.org/record/3267950"/>
    <adms:identifier>
      <adms:Identifier>
        <skos:notation rdf:datatype="http://www.w3.org/2001/XMLSchema#anyURI">https://zenodo.org/record/3267950</skos:notation>
      </adms:Identifier>
    </adms:identifier>
    <dct:isVersionOf rdf:resource="https://doi.org/10.5281/zenodo.3267949"/>
    <owl:versionInfo>0.6.4</owl:versionInfo>
    <dct:description>&lt;p&gt;NullAway is a tool to help eliminate&amp;nbsp;&lt;code&gt;NullPointerException&lt;/code&gt;s (NPEs) in your Java code. To use NullAway, first add&amp;nbsp;&lt;code&gt;@Nullable&amp;nbsp;&lt;/code&gt;annotations in your code wherever a field, method parameter, or return value may be&amp;nbsp;&lt;code&gt;null&lt;/code&gt;. Given these annotations, NullAway performs a series of type-based, local checks to ensure that any pointer that gets dereferenced in your code cannot be&amp;nbsp;&lt;code&gt;null&lt;/code&gt;. NullAway is similar to the type-based nullability checking in the Kotlin and Swift languages, and the&amp;nbsp;&lt;a href="https://checkerframework.org/"&gt;Checker Framework&lt;/a&gt;&amp;nbsp;and&amp;nbsp;&lt;a href="http://fbinfer.com/docs/eradicate.html"&gt;Eradicate&lt;/a&gt;&amp;nbsp;null checkers for Java.&lt;/p&gt; &lt;p&gt;NullAway is&amp;nbsp;&lt;em&gt;fast&lt;/em&gt;. It is built as a plugin to&amp;nbsp;&lt;a href="http://errorprone.info/"&gt;Error Prone&lt;/a&gt;&amp;nbsp;and can run on every single build of your code. In our measurements, the build-time overhead of running NullAway is usually less than 10%. NullAway is also&amp;nbsp;&lt;em&gt;practical&lt;/em&gt;: it does not prevent all possible NPEs in your code, but it catches most of the NPEs we have observed in production while imposing a reasonable annotation burden.&lt;/p&gt;</dct:description>
    <dct:accessRights rdf:resource="http://publications.europa.eu/resource/authority/access-right/PUBLIC"/>
    <dct:accessRights>
      <dct:RightsStatement rdf:about="info:eu-repo/semantics/openAccess">
        <rdfs:label>Open Access</rdfs:label>
      </dct:RightsStatement>
    </dct:accessRights>
    <dcat:distribution>
      <dcat:Distribution>
        <dct:rights>
          <dct:RightsStatement rdf:about="http://www.opensource.org/licenses/MIT">
            <rdfs:label>MIT License</rdfs:label>
          </dct:RightsStatement>
        </dct:rights>
        <dcat:accessURL rdf:resource="https://doi.org/10.5281/zenodo.3267950"/>
      </dcat:Distribution>
    </dcat:distribution>
  </rdf:Description>
</rdf:RDF>
49
4
views
downloads
All versions This version
Views 4949
Downloads 44
Data volume 5.0 MB5.0 MB
Unique views 3737
Unique downloads 44

Share

Cite as