Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit 653563f

Browse files
committed
Make StringsNewReplacer use new API
We don't have to keep a deprecated copy as this is private. This allows us to delete a copy of the DataFlow library!
1 parent 1f6cdc7 commit 653563f

4 files changed

Lines changed: 7 additions & 444 deletions

File tree

config/identical-files.json

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,6 @@
2222
"csharp/ql/lib/semmle/code/csharp/dataflow/internal/DataFlowImpl5.qll",
2323
"go/ql/lib/semmle/go/dataflow/internal/DataFlowImpl1.qll",
2424
"go/ql/lib/semmle/go/dataflow/internal/DataFlowImpl2.qll",
25-
"go/ql/lib/semmle/go/dataflow/internal/DataFlowImplForStringsNewReplacer.qll",
2625
"python/ql/lib/semmle/python/dataflow/new/internal/DataFlowImpl1.qll",
2726
"python/ql/lib/semmle/python/dataflow/new/internal/DataFlowImpl2.qll",
2827
"python/ql/lib/semmle/python/dataflow/new/internal/DataFlowImpl3.qll",

go/ql/lib/semmle/go/StringOps.qll

Lines changed: 7 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@
33
*/
44

55
import go
6-
private import semmle.go.dataflow.DataFlowForStringsNewReplacer
76

87
/** Provides predicates and classes for working with string operations. */
98
module StringOps {
@@ -228,34 +227,28 @@ module StringOps {
228227
* the receiver of a call to `strings.Replacer.Replace` or
229228
* `strings.Replacer.WriteString`.
230229
*/
231-
private class StringsNewReplacerConfiguration extends DataFlowForStringsNewReplacer::Configuration
232-
{
233-
StringsNewReplacerConfiguration() { this = "StringsNewReplacerConfiguration" }
230+
private module StringsNewReplacerConfig implements DataFlow::ConfigSig {
231+
predicate isSource(DataFlow::Node source) { source instanceof StringsNewReplacerCall }
234232

235-
override predicate isSource(DataFlow::Node source) {
236-
source instanceof StringsNewReplacerCall
237-
}
238-
239-
override predicate isSink(DataFlow::Node sink) {
233+
predicate isSink(DataFlow::Node sink) {
240234
exists(DataFlow::MethodCallNode call |
241235
sink = call.getReceiver() and
242236
call.getTarget().hasQualifiedName("strings", "Replacer", ["Replace", "WriteString"])
243237
)
244238
}
245239
}
246240

241+
private module StringsNewReplacerFlow = DataFlow::Global<StringsNewReplacerConfig>;
242+
247243
/**
248244
* A call to `strings.Replacer.Replace` or `strings.Replacer.WriteString`.
249245
*/
250246
private class StringsReplacerReplaceOrWriteString extends Range {
251247
string replacedString;
252248

253249
StringsReplacerReplaceOrWriteString() {
254-
exists(
255-
StringsNewReplacerConfiguration config, StringsNewReplacerCall source,
256-
DataFlow::Node sink, DataFlow::MethodCallNode call
257-
|
258-
config.hasFlow(source, sink) and
250+
exists(StringsNewReplacerCall source, DataFlow::Node sink, DataFlow::MethodCallNode call |
251+
StringsNewReplacerFlow::flow(source, sink) and
259252
sink = call.getReceiver() and
260253
replacedString = source.getAReplacedArgument().getStringValue() and
261254
(

go/ql/lib/semmle/go/dataflow/DataFlowForStringsNewReplacer.qll

Lines changed: 0 additions & 27 deletions
This file was deleted.

0 commit comments

Comments
 (0)