mirror of
https://github.com/elicpeter/nyx.git
synced 2026-07-21 21:31:03 +02:00
Python fp and docs updtes (#58)
* refactor: Update comments for clarity and add expectations.json files for performance metrics * feat: Implement FP guard for JS/TS local-collection receivers to suppress missing ownership checks * feat: Enhance Rust parameter handling to classify local collections and prevent false ownership checks * refactor: Simplify code formatting for better readability in multiple files * refactor: Improve UTF-8 sequence length handling and enhance clarity in loop iteration * feat: Update Java and Python patterns to include new security rules * refactor: Improve comment clarity and consistency across multiple Rust files * refactor: Simplify code formatting for improved readability in integration tests and module files * refactor: Improve comment formatting and enhance clarity in assertions across multiple files
This commit is contained in:
parent
4db0805de6
commit
a438886217
291 changed files with 9485 additions and 3851 deletions
|
|
@ -8,7 +8,7 @@ pub struct SymbolId(pub(crate) u32);
|
|||
|
||||
/// Function-scope discriminator for symbol interning.
|
||||
///
|
||||
/// This provides **function-level isolation only** — not full lexical/block
|
||||
/// This provides **function-level isolation only**, not full lexical/block
|
||||
/// scope modeling. Variables in different functions with the same name get
|
||||
/// distinct [`SymbolId`]s. Top-level / module-scope code uses `scope: None`.
|
||||
#[derive(Clone, Debug, PartialEq, Eq, Hash)]
|
||||
|
|
@ -21,8 +21,8 @@ struct ScopedKey {
|
|||
///
|
||||
/// Built once from CFG node `defines`/`uses`, reused throughout analysis.
|
||||
/// Two construction modes:
|
||||
/// - [`from_cfg`](Self::from_cfg): flat (unscoped) interning — used by taint/SSA pipeline
|
||||
/// - [`from_cfg_scoped`](Self::from_cfg_scoped): function-scoped interning — used by state analysis
|
||||
/// - [`from_cfg`](Self::from_cfg): flat (unscoped) interning, used by taint/SSA pipeline
|
||||
/// - [`from_cfg_scoped`](Self::from_cfg_scoped): function-scoped interning, used by state analysis
|
||||
#[derive(Default)]
|
||||
pub struct SymbolInterner {
|
||||
to_id: HashMap<ScopedKey, SymbolId>,
|
||||
|
|
@ -43,7 +43,7 @@ impl SymbolInterner {
|
|||
/// scoped key.
|
||||
pub fn intern_scoped(&mut self, scope: Option<&str>, name: &str) -> SymbolId {
|
||||
// Member expressions (e.g. `this.fd`, `self.conn`) are shared class/
|
||||
// instance state — keep them in the global (None) scope so that
|
||||
// instance state, keep them in the global (None) scope so that
|
||||
// `open()` and `close()` methods can track the same resource symbol.
|
||||
// Only plain local variables get function-scoped isolation.
|
||||
let effective_scope = if name.contains('.') { None } else { scope };
|
||||
|
|
@ -70,7 +70,7 @@ impl SymbolInterner {
|
|||
self.to_id.get(&key).copied()
|
||||
}
|
||||
|
||||
/// Intern a name (unscoped — equivalent to `intern_scoped(None, name)`).
|
||||
/// Intern a name (unscoped, equivalent to `intern_scoped(None, name)`).
|
||||
///
|
||||
/// Used by the taint/SSA pipeline and unit tests that don't need
|
||||
/// function-scope isolation.
|
||||
|
|
@ -78,7 +78,7 @@ impl SymbolInterner {
|
|||
self.intern_scoped(None, name)
|
||||
}
|
||||
|
||||
/// Look up a name without interning it (unscoped — equivalent to
|
||||
/// Look up a name without interning it (unscoped, equivalent to
|
||||
/// `get_scoped(None, name)`).
|
||||
pub fn get(&self, name: &str) -> Option<SymbolId> {
|
||||
self.get_scoped(None, name)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue