Skip to content
This repository has been archived by the owner on May 25, 2022. It is now read-only.

Commit

Permalink
feat(sourcecode): add api only flags
Browse files Browse the repository at this point in the history
  • Loading branch information
phodal committed Mar 25, 2022
1 parent 8ba6f23 commit ef72630
Show file tree
Hide file tree
Showing 2 changed files with 36 additions and 12 deletions.
4 changes: 2 additions & 2 deletions common/src/main/java/infrastructure/SourceBatch.java
Expand Up @@ -18,7 +18,7 @@

public class SourceBatch extends DefaultBatchImpl {
private static final Logger logger = LoggerFactory.getLogger(SourceBatch.class);
public static final String[] TABLES = new String[]{
public static final String[] ALL_TABLES = new String[]{
"code_class",
"code_field",
"code_method",
Expand Down Expand Up @@ -83,7 +83,7 @@ private String methodStoreKey(Map<String, String> values) {
public void execute() {
long start = System.currentTimeMillis();
int totalInsert = 0;
for (String table : TABLES) {
for (String table : ALL_TABLES) {
List<Map<String, String>> values = insertStore.get(table);
if (values != null && !values.isEmpty()) {
totalInsert = totalInsert + values.size();
Expand Down
Expand Up @@ -5,15 +5,16 @@ import chapi.app.analyser.config.ChapiConfig
import chapi.domain.core.CodeDataStruct
import com.github.ajalt.clikt.core.CliktCommand
import com.github.ajalt.clikt.parameters.options.default
import com.github.ajalt.clikt.parameters.options.flag
import com.github.ajalt.clikt.parameters.options.option
import org.archguard.scanner.sourcecode.backend.CSharpApiAnalyser
import org.archguard.scanner.sourcecode.frontend.FrontendApiAnalyser
import infrastructure.DBIStore
import infrastructure.SourceBatch.TABLES
import infrastructure.SourceBatch.ALL_TABLES
import infrastructure.task.SqlExecuteThreadPool
import kotlinx.serialization.encodeToString
import kotlinx.serialization.json.Json
import org.archguard.scanner.sourcecode.backend.CSharpApiAnalyser
import org.archguard.scanner.sourcecode.backend.JavaApiAnalyser
import org.archguard.scanner.sourcecode.frontend.FrontendApiAnalyser
import org.slf4j.LoggerFactory
import java.io.File
import java.io.IOException
Expand All @@ -28,13 +29,24 @@ class Runner : CliktCommand(help = "scan git to sql") {
private val store = DBIStore.getInstance()

private val path: String by option(help = "local path").default(".")
private val apiOnly: Boolean by option(help = "only scan api").flag()
private val systemId: String by option(help = "system id").default("0")
private val language: String by option(help = "langauge: Java, Kotlin, TypeScript, CSharp, Python, Golang").default(
"Java"
)

val API_TABLES = arrayOf(
"container_demand",
"container_resource",
"container_service"
)

override fun run() {
cleanSqlFile(TABLES)
if (!apiOnly) {
cleanSqlFile(API_TABLES)
} else {
cleanSqlFile(ALL_TABLES)
}

var dataStructs: Array<CodeDataStruct> = arrayOf()
val lang = language.lowercase()
Expand All @@ -60,17 +72,28 @@ class Runner : CliktCommand(help = "scan git to sql") {
}

File("structs.json").writeText(Json.encodeToString(dataStructs))
toSql(dataStructs, systemId, lang)

if(!apiOnly) {
saveDataStructs(dataStructs, systemId, lang)
}

saveApi(dataStructs, systemId, lang)

logger.info("start insert data into Mysql")
val sqlStart = System.currentTimeMillis()
storeDatabase(TABLES, systemId)

if(!apiOnly) {
storeDatabase(ALL_TABLES, systemId)
} else {
storeDatabase(API_TABLES, systemId)
}

val sqlEnd = System.currentTimeMillis()
logger.info("Insert into MySql spend: {} s", (sqlEnd - sqlStart) / 1000)
SqlExecuteThreadPool.close()
}

private fun toSql(dataStructs: Array<CodeDataStruct>, systemId: String, language: String) {
private fun saveDataStructs(dataStructs: Array<CodeDataStruct>, systemId: String, language: String) {
val repo = ClassRepository(systemId, language, path)

dataStructs.forEach { data ->
Expand All @@ -82,6 +105,10 @@ class Runner : CliktCommand(help = "scan git to sql") {
repo.saveClassBody(data)
}

repo.close()
}

private fun saveApi(dataStructs: Array<CodeDataStruct>, systemId: String, language: String) {
logger.info("========================================================")
when (language.lowercase()) {
"typescript", "javascript" -> {
Expand Down Expand Up @@ -133,9 +160,6 @@ class Runner : CliktCommand(help = "scan git to sql") {
containerRepository.close()
}
}

logger.info("========================================================")
repo.close()
}

private fun storeDatabase(tables: Array<String>, systemId: String) {
Expand Down

0 comments on commit ef72630

Please sign in to comment.