blob: 5de517882796b92fbff952c5706cf5c08a1938ad [file] [view]
---
name: webrtc/sdk/match-native-interface-in-wrapper-doc-comments
description: When documenting SDK wrapper classes or native pointer handles in Javadoc, accurately specify the C++ interface type, nullability, and ownership semantics
rubric: readability
severity: should_fix
---
**Rule.** When adding or updating Javadoc comments on platform SDK wrapper
classes or native pointer handles (such as class-level descriptions, long
handles in factory methods, or getNative...() accessors), ensure referenced C++
type names (e.g., webrtc::RtpReceiverInterface) accurately match the wrapped
object. Additionally, explicitly document nullability (non-null vs. nullable)
and ownership semantics (such as non-owning pointer or owning scoped_refptr) to
match the native contract and implementation guarantees.
**Why.** Inaccurate C++ type names, nullability annotations, or ownership
contracts in wrapper documentation mislead maintainers and SDK callers regarding
the underlying native C++ interface, lifetime requirements, and whether null
returns need handling, complicating JNI bridge maintenance and debugging.
## Examples
Bad:
```cpp
/** Java wrapper for a C++ RtpReceiverInterface. */
public class RtpReceiver {
/** Returns a pointer to webrtc::RtpSenderInterface. */
long getNativeRtpReceiver() {
return nativeRtpReceiver;
}
}
/**
* Dynamically allocates a {@code webrtc::AudioProcessing} instance.
*
* @param webrtcEnvRef non-null non-owning pointer to {@code webrtc::Environment}
* @return nullable owning scoped_refptr pointer to {@code webrtc::AudioProcessing}
*/
long createNative(long webrtcEnvRef);
```
Good:
```cpp
/** Java wrapper for a C++ RtpReceiverInterface. */
public class RtpReceiver {
/** Returns a pointer to webrtc::RtpReceiverInterface. */
long getNativeRtpReceiver() {
return nativeRtpReceiver;
}
}
/**
* Dynamically allocates a {@code webrtc::AudioProcessing} instance.
*
* @param webrtcEnvRef non-null non-owning pointer to {@code webrtc::Environment}
* @return non-null owning scoped_refptr pointer to {@code webrtc::AudioProcessing}
*/
long createNative(long webrtcEnvRef);
```