Showing
1 changed file
with
33 additions
and
3 deletions
... | @@ -229,6 +229,8 @@ namespace VulnCrawler | ... | @@ -229,6 +229,8 @@ namespace VulnCrawler |
229 | 229 | ||
230 | protected override IList<Block> GetCriticalBlocks(string srcCode, IEnumerable<string> criticalList) | 230 | protected override IList<Block> GetCriticalBlocks(string srcCode, IEnumerable<string> criticalList) |
231 | { | 231 | { |
232 | + // srcCode = Regex.Replace(srcCode, @"if.+\n\{", @"if.+\{", RegexOptions.Multiline); | ||
233 | + | ||
232 | var split = srcCode.Split('\n'); | 234 | var split = srcCode.Split('\n'); |
233 | int bracketCount = 0; | 235 | int bracketCount = 0; |
234 | var blockList = new List<Block>(); | 236 | var blockList = new List<Block>(); |
... | @@ -238,22 +240,46 @@ namespace VulnCrawler | ... | @@ -238,22 +240,46 @@ namespace VulnCrawler |
238 | { | 240 | { |
239 | return null; | 241 | return null; |
240 | } | 242 | } |
243 | + bool hasIf = false; | ||
241 | bool mainLine = true; /* 현재 라인이 메인 코드 라인인지 */ | 244 | bool mainLine = true; /* 현재 라인이 메인 코드 라인인지 */ |
242 | - bool criticalBlock = false; /* 현재 라인이 메인 코드 라인인지 */ | 245 | + bool criticalBlock = false; /* 현재 라인이 크리티컬 블록 라인인지 */ |
243 | - int blockNum = 1; /* 현재 라인이 메인 코드 라인인지 */ | 246 | + int blockNum = 1; /* 블록 번호 */ |
244 | foreach (var line in split) | 247 | foreach (var line in split) |
245 | { | 248 | { |
249 | + bool hasRight = false; | ||
250 | + | ||
246 | string trim = line.Trim(); | 251 | string trim = line.Trim(); |
252 | + | ||
247 | /* 중괄호 수 세기 */ | 253 | /* 중괄호 수 세기 */ |
248 | int openBracketCount = trim.Count(c => c == '{'); | 254 | int openBracketCount = trim.Count(c => c == '{'); |
249 | int closeBracketCount = trim.Count(c => c == '}'); | 255 | int closeBracketCount = trim.Count(c => c == '}'); |
256 | + //if (!hasIf) | ||
257 | + //{ | ||
258 | + // if (Regex.IsMatch(trim, @"^if.+\)$")) | ||
259 | + // { | ||
260 | + // // Console.WriteLine("if 들어감"); | ||
261 | + // hasIf = true; | ||
262 | + // } | ||
263 | + //} | ||
264 | + //else | ||
265 | + //{ | ||
266 | + // if (!Regex.IsMatch(trim, @"^\{")) | ||
267 | + // { | ||
268 | + // openBracketCount++; | ||
269 | + // } | ||
270 | + // hasIf = false; | ||
271 | + //} | ||
272 | + | ||
273 | + | ||
274 | + | ||
250 | int subtract = openBracketCount - closeBracketCount; | 275 | int subtract = openBracketCount - closeBracketCount; |
251 | bracketCount += subtract; | 276 | bracketCount += subtract; |
252 | 277 | ||
278 | + | ||
253 | if (trim.Equals("}")) | 279 | if (trim.Equals("}")) |
254 | { | 280 | { |
255 | builder.AppendLine(line); | 281 | builder.AppendLine(line); |
256 | - continue; | 282 | + hasRight = true; |
257 | } | 283 | } |
258 | /* 중괄호 연산 결과 1이라는 것은 메인 라인 */ | 284 | /* 중괄호 연산 결과 1이라는 것은 메인 라인 */ |
259 | if (bracketCount == 1) | 285 | if (bracketCount == 1) |
... | @@ -313,10 +339,14 @@ namespace VulnCrawler | ... | @@ -313,10 +339,14 @@ namespace VulnCrawler |
313 | } | 339 | } |
314 | } | 340 | } |
315 | 341 | ||
342 | + if (!hasRight) | ||
343 | + { | ||
316 | builder.AppendLine(line); | 344 | builder.AppendLine(line); |
317 | 345 | ||
318 | } | 346 | } |
319 | 347 | ||
348 | + } | ||
349 | + | ||
320 | /* 마지막 남은게 있을 수 있으니 추가 */ | 350 | /* 마지막 남은게 있을 수 있으니 추가 */ |
321 | string fs = builder.ToString(); | 351 | string fs = builder.ToString(); |
322 | if (!string.IsNullOrWhiteSpace(fs)) | 352 | if (!string.IsNullOrWhiteSpace(fs)) | ... | ... |
-
Please register or login to post a comment