Skip to main content
typo
Source Link
msw
  • 1.9k
  • 10
  • 16

This is a task that defies static analysis. For example the not-unlikely code

def open_me(dir_path, filename, extension):
    return open(dir_path + filename + extension)

would be a tough one to catch. When faced with an insoluble problem, use heuristics. I'd go both directions with this.

  1. Assume that every filename in the tree is a candidate for being referenced in every file. I'd also add to the candidates someFile for every `someFilesomeFile.js. Then search the entire codebase for instances of the candidates and report them as possible defects which must be looked at. I recommend putting eyeballs in the loop because you don't want to catch comments and string literals which may not be filenames. Tedious? Sure.
  2. The second direction is to look at every open() or similar function for filename-like things. This is tedious too.

There is only one way to prevent it happening in the future:

  1. Set a policy and enforce it through code reviews. You went to a new platform which has additional portability constraints. Because of the open_me gotcha above, additional discipline is needed by the development team.

This is a task that defies static analysis. For example the not-unlikely code

def open_me(dir_path, filename, extension):
    return open(dir_path + filename + extension)

would be a tough one to catch. When faced with an insoluble problem, use heuristics. I'd go both directions with this.

  1. Assume that every filename in the tree is a candidate for being referenced in every file. I'd also add to the candidates someFile for every `someFile. Then search the entire codebase for instances of the candidates and report them as possible defects which must be looked at. I recommend putting eyeballs in the loop because you don't want to catch comments and string literals which may not be filenames. Tedious? Sure.
  2. The second direction is to look at every open() or similar function for filename-like things. This is tedious too.

There is only one way to prevent it happening in the future:

  1. Set a policy and enforce it through code reviews. You went to a new platform which has additional portability constraints. Because of the open_me gotcha above, additional discipline is needed by the development team.

This is a task that defies static analysis. For example the not-unlikely code

def open_me(dir_path, filename, extension):
    return open(dir_path + filename + extension)

would be a tough one to catch. When faced with an insoluble problem, use heuristics. I'd go both directions with this.

  1. Assume that every filename in the tree is a candidate for being referenced in every file. I'd also add to the candidates someFile for every someFile.js. Then search the entire codebase for instances of the candidates and report them as possible defects which must be looked at. I recommend putting eyeballs in the loop because you don't want to catch comments and string literals which may not be filenames. Tedious? Sure.
  2. The second direction is to look at every open() or similar function for filename-like things. This is tedious too.

There is only one way to prevent it happening in the future:

  1. Set a policy and enforce it through code reviews. You went to a new platform which has additional portability constraints. Because of the open_me gotcha above, additional discipline is needed by the development team.
Source Link
msw
  • 1.9k
  • 10
  • 16

This is a task that defies static analysis. For example the not-unlikely code

def open_me(dir_path, filename, extension):
    return open(dir_path + filename + extension)

would be a tough one to catch. When faced with an insoluble problem, use heuristics. I'd go both directions with this.

  1. Assume that every filename in the tree is a candidate for being referenced in every file. I'd also add to the candidates someFile for every `someFile. Then search the entire codebase for instances of the candidates and report them as possible defects which must be looked at. I recommend putting eyeballs in the loop because you don't want to catch comments and string literals which may not be filenames. Tedious? Sure.
  2. The second direction is to look at every open() or similar function for filename-like things. This is tedious too.

There is only one way to prevent it happening in the future:

  1. Set a policy and enforce it through code reviews. You went to a new platform which has additional portability constraints. Because of the open_me gotcha above, additional discipline is needed by the development team.