You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@skywalking.apache.org by ke...@apache.org on 2020/12/21 07:57:55 UTC

[skywalking-eyes] 21/25: Add more supported fixing filetypes and update license

This is an automated email from the ASF dual-hosted git repository.

kezhenxu94 pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/skywalking-eyes.git

commit 7a4704257468abb2d2bc34f22301ba3ea4b07ffa
Author: kezhenxu94 <ke...@apache.org>
AuthorDate: Mon Dec 21 11:08:39 2020 +0800

    Add more supported fixing filetypes and update license
---
 .github/workflows/build.yaml   | 29 ++++++++++++----------
 .gitignore                     | 29 ++++++++++++----------
 .licenserc.yaml                | 22 ++++++++++-------
 Dockerfile                     | 29 ++++++++++++----------
 Makefile                       | 29 ++++++++++++----------
 action.yml                     | 29 ++++++++++++----------
 cmd/root.go                    | 33 +++++++++++++------------
 commands/header/check.go       | 25 ++++++++++---------
 commands/header/fix.go         | 35 +++++++++++++++------------
 commands/header/header.go      | 25 ++++++++++---------
 internal/logger/log.go         | 25 ++++++++++---------
 main.go                        | 21 +++++++++-------
 pkg/header/check.go            | 27 ++++++++++++---------
 pkg/header/config.go           | 25 ++++++++++---------
 pkg/header/fix/anglebracket.go | 55 ++++++++++++++++++++++++++++++++++++++++++
 pkg/header/fix/doubleslash.go  | 48 ++++++++++++++++++++++++++++++++++++
 pkg/header/fix/fix.go          | 52 +++++++++++++++++++++++++++++++++++++++
 pkg/header/fix/go.go           | 51 ---------------------------------------
 pkg/header/fix/hashtag.go      | 48 ++++++++++++++++++++++++++++++++++++
 pkg/header/result.go           | 25 ++++++++++---------
 20 files changed, 430 insertions(+), 232 deletions(-)

diff --git a/.github/workflows/build.yaml b/.github/workflows/build.yaml
index 55f216f..1fa632a 100644
--- a/.github/workflows/build.yaml
+++ b/.github/workflows/build.yaml
@@ -1,17 +1,20 @@
-# Copyright © 2020 Hoshea Jiang <ho...@apache.org>
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
+# Licensed to Apache Software Foundation (ASF) under one or more contributor
+# license agreements. See the NOTICE file distributed with
+# this work for additional information regarding copyright
+# ownership. Apache Software Foundation (ASF) licenses this file to you under
+# the Apache License, Version 2.0 (the "License"); you may
+# not use this file except in compliance with the License.
 # You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
+# 
+#     http://www.apache.org/licenses/LICENSE-2.0
+# 
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied.  See the License for the
+# specific language governing permissions and limitations
+# under the License.
+# 
 name: Build
 
 on:
diff --git a/.gitignore b/.gitignore
index 1bbee36..b4c85e8 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,16 +1,19 @@
-# Copyright © 2020 Hoshea Jiang <ho...@apache.org>
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
+# Licensed to Apache Software Foundation (ASF) under one or more contributor
+# license agreements. See the NOTICE file distributed with
+# this work for additional information regarding copyright
+# ownership. Apache Software Foundation (ASF) licenses this file to you under
+# the Apache License, Version 2.0 (the "License"); you may
+# not use this file except in compliance with the License.
 # You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
+# 
+#     http://www.apache.org/licenses/LICENSE-2.0
+# 
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied.  See the License for the
+# specific language governing permissions and limitations
+# under the License.
+# 
 .idea/
 bin/
diff --git a/.licenserc.yaml b/.licenserc.yaml
index 14b125c..d14df0b 100644
--- a/.licenserc.yaml
+++ b/.licenserc.yaml
@@ -1,21 +1,25 @@
 license: |
-  Copyright © 2020 Hoshea Jiang <ho...@apache.org>
-
-  Licensed under the Apache License, Version 2.0 (the "License");
-  you may not use this file except in compliance with the License.
+  Licensed to Apache Software Foundation (ASF) under one or more contributor
+  license agreements. See the NOTICE file distributed with
+  this work for additional information regarding copyright
+  ownership. Apache Software Foundation (ASF) licenses this file to you under
+  the Apache License, Version 2.0 (the "License"); you may
+  not use this file except in compliance with the License.
   You may obtain a copy of the License at
 
       http://www.apache.org/licenses/LICENSE-2.0
 
-  Unless required by applicable law or agreed to in writing, software
-  distributed under the License is distributed on an "AS IS" BASIS,
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  See the License for the specific language governing permissions and
-  limitations under the License.
+  Unless required by applicable law or agreed to in writing,
+  software distributed under the License is distributed on an
+  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+  KIND, either express or implied.  See the License for the
+  specific language governing permissions and limitations
+  under the License.
 
 paths-ignore:
   - '.git/**'
   - '.idea/**'
+  - 'bin/**'
   - '**/*.md'
   - 'test/**'
   - 'go.mod'
diff --git a/Dockerfile b/Dockerfile
index 602de2d..a466f44 100644
--- a/Dockerfile
+++ b/Dockerfile
@@ -1,17 +1,20 @@
-# Copyright © 2020 Hoshea Jiang <ho...@apache.org>
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
+# Licensed to Apache Software Foundation (ASF) under one or more contributor
+# license agreements. See the NOTICE file distributed with
+# this work for additional information regarding copyright
+# ownership. Apache Software Foundation (ASF) licenses this file to you under
+# the Apache License, Version 2.0 (the "License"); you may
+# not use this file except in compliance with the License.
 # You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
+# 
+#     http://www.apache.org/licenses/LICENSE-2.0
+# 
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied.  See the License for the
+# specific language governing permissions and limitations
+# under the License.
+# 
 FROM golang:1.14.3-alpine AS build
 
 WORKDIR /src
diff --git a/Makefile b/Makefile
index 6220eba..e2a933a 100644
--- a/Makefile
+++ b/Makefile
@@ -1,17 +1,20 @@
-# Copyright © 2020 Hoshea Jiang <ho...@apache.org>
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
+# Licensed to Apache Software Foundation (ASF) under one or more contributor
+# license agreements. See the NOTICE file distributed with
+# this work for additional information regarding copyright
+# ownership. Apache Software Foundation (ASF) licenses this file to you under
+# the Apache License, Version 2.0 (the "License"); you may
+# not use this file except in compliance with the License.
 # You may obtain a copy of the License at
-#
-#    http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
+# 
+#     http://www.apache.org/licenses/LICENSE-2.0
+# 
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied.  See the License for the
+# specific language governing permissions and limitations
+# under the License.
+# 
 PROJECT = license-checker
 VERSION ?= latest
 OUT_DIR = bin
diff --git a/action.yml b/action.yml
index f9773c5..bcdf432 100644
--- a/action.yml
+++ b/action.yml
@@ -1,17 +1,20 @@
-# Copyright © 2020 Hoshea Jiang <ho...@apache.org>
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
+# Licensed to Apache Software Foundation (ASF) under one or more contributor
+# license agreements. See the NOTICE file distributed with
+# this work for additional information regarding copyright
+# ownership. Apache Software Foundation (ASF) licenses this file to you under
+# the Apache License, Version 2.0 (the "License"); you may
+# not use this file except in compliance with the License.
 # You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
+# 
+#     http://www.apache.org/licenses/LICENSE-2.0
+# 
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied.  See the License for the
+# specific language governing permissions and limitations
+# under the License.
+# 
 name: License Guard
 description: A tool for checking license headers, which theoretically supports checking all types of files.
 branding:
diff --git a/cmd/root.go b/cmd/root.go
index 93a195e..e6d4b98 100644
--- a/cmd/root.go
+++ b/cmd/root.go
@@ -1,19 +1,20 @@
-/*
-Copyright © 2020 Hoshea Jiang <ho...@apache.org>
-
-Licensed under the Apache License, Version 2.0 (the "License");
-you may not use this file except in compliance with the License.
-You may obtain a copy of the License at
-
-    http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing, software
-distributed under the License is distributed on an "AS IS" BASIS,
-WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-See the License for the specific language governing permissions and
-limitations under the License.
-*/
-
+// Licensed to Apache Software Foundation (ASF) under one or more contributor
+// license agreements. See the NOTICE file distributed with
+// this work for additional information regarding copyright
+// ownership. Apache Software Foundation (ASF) licenses this file to you under
+// the Apache License, Version 2.0 (the "License"); you may
+// not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing,
+// software distributed under the License is distributed on an
+// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+// KIND, either express or implied.  See the License for the
+// specific language governing permissions and limitations
+// under the License.
+//
 package cmd
 
 import (
diff --git a/commands/header/check.go b/commands/header/check.go
index 3c3a39d..ef141cc 100644
--- a/commands/header/check.go
+++ b/commands/header/check.go
@@ -1,17 +1,20 @@
-// Copyright © 2020 Hoshea Jiang <ho...@apache.org>
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
+// Licensed to Apache Software Foundation (ASF) under one or more contributor
+// license agreements. See the NOTICE file distributed with
+// this work for additional information regarding copyright
+// ownership. Apache Software Foundation (ASF) licenses this file to you under
+// the Apache License, Version 2.0 (the "License"); you may
+// not use this file except in compliance with the License.
 // You may obtain a copy of the License at
 //
-// http://www.apache.org/licenses/LICENSE-2.0
+//     http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing,
+// software distributed under the License is distributed on an
+// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+// KIND, either express or implied.  See the License for the
+// specific language governing permissions and limitations
+// under the License.
 //
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
 package header
 
 import (
diff --git a/commands/header/fix.go b/commands/header/fix.go
index 7a14789..dc50e65 100644
--- a/commands/header/fix.go
+++ b/commands/header/fix.go
@@ -1,22 +1,25 @@
-// Copyright © 2020 Hoshea Jiang <ho...@apache.org>
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
+// Licensed to Apache Software Foundation (ASF) under one or more contributor
+// license agreements. See the NOTICE file distributed with
+// this work for additional information regarding copyright
+// ownership. Apache Software Foundation (ASF) licenses this file to you under
+// the Apache License, Version 2.0 (the "License"); you may
+// not use this file except in compliance with the License.
 // You may obtain a copy of the License at
 //
 //     http://www.apache.org/licenses/LICENSE-2.0
 //
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
+// Unless required by applicable law or agreed to in writing,
+// software distributed under the License is distributed on an
+// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+// KIND, either express or implied.  See the License for the
+// specific language governing permissions and limitations
+// under the License.
 //
 package header
 
 import (
+	"fmt"
 	"github.com/spf13/cobra"
-	"license-checker/internal/logger"
 	"license-checker/pkg/header"
 	"license-checker/pkg/header/fix"
 	"strings"
@@ -38,15 +41,17 @@ var FixCommand = &cobra.Command{
 			return err
 		}
 
+		var errors []string
 		for _, file := range result.Failure {
-			if strings.HasSuffix(file, ".go") {
-				logger.Log.Infoln("Fixing file:", file)
-				if err := fix.GoLang(file, &config, &result); err != nil {
-					return err
-				}
+			if err := fix.Fix(file, &config, &result); err != nil {
+				errors = append(errors, err.Error())
 			}
 		}
 
+		if len(errors) > 0 {
+			return fmt.Errorf(strings.Join(errors, "\n"))
+		}
+
 		return nil
 	},
 }
diff --git a/commands/header/header.go b/commands/header/header.go
index baa65b6..86d58da 100644
--- a/commands/header/header.go
+++ b/commands/header/header.go
@@ -1,17 +1,20 @@
-// Copyright © 2020 Hoshea Jiang <ho...@apache.org>
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
+// Licensed to Apache Software Foundation (ASF) under one or more contributor
+// license agreements. See the NOTICE file distributed with
+// this work for additional information regarding copyright
+// ownership. Apache Software Foundation (ASF) licenses this file to you under
+// the Apache License, Version 2.0 (the "License"); you may
+// not use this file except in compliance with the License.
 // You may obtain a copy of the License at
 //
-// http://www.apache.org/licenses/LICENSE-2.0
+//     http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing,
+// software distributed under the License is distributed on an
+// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+// KIND, either express or implied.  See the License for the
+// specific language governing permissions and limitations
+// under the License.
 //
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
 package header
 
 import (
diff --git a/internal/logger/log.go b/internal/logger/log.go
index 602437b..7fc102e 100644
--- a/internal/logger/log.go
+++ b/internal/logger/log.go
@@ -1,17 +1,20 @@
-// Copyright © 2020 Hoshea Jiang <ho...@apache.org>
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
+// Licensed to Apache Software Foundation (ASF) under one or more contributor
+// license agreements. See the NOTICE file distributed with
+// this work for additional information regarding copyright
+// ownership. Apache Software Foundation (ASF) licenses this file to you under
+// the Apache License, Version 2.0 (the "License"); you may
+// not use this file except in compliance with the License.
 // You may obtain a copy of the License at
 //
-// http://www.apache.org/licenses/LICENSE-2.0
+//     http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing,
+// software distributed under the License is distributed on an
+// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+// KIND, either express or implied.  See the License for the
+// specific language governing permissions and limitations
+// under the License.
 //
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
 package logger
 
 import (
diff --git a/main.go b/main.go
index 9025a0d..b2f1453 100644
--- a/main.go
+++ b/main.go
@@ -1,16 +1,19 @@
-// Copyright © 2020 Hoshea Jiang <ho...@apache.org>
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
+// Licensed to Apache Software Foundation (ASF) under one or more contributor
+// license agreements. See the NOTICE file distributed with
+// this work for additional information regarding copyright
+// ownership. Apache Software Foundation (ASF) licenses this file to you under
+// the Apache License, Version 2.0 (the "License"); you may
+// not use this file except in compliance with the License.
 // You may obtain a copy of the License at
 //
 //     http://www.apache.org/licenses/LICENSE-2.0
 //
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
+// Unless required by applicable law or agreed to in writing,
+// software distributed under the License is distributed on an
+// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+// KIND, either express or implied.  See the License for the
+// specific language governing permissions and limitations
+// under the License.
 //
 package main
 
diff --git a/pkg/header/check.go b/pkg/header/check.go
index 32776e3..006fc9c 100644
--- a/pkg/header/check.go
+++ b/pkg/header/check.go
@@ -1,17 +1,20 @@
-// Copyright © 2020 Hoshea Jiang <ho...@apache.org>
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
+// Licensed to Apache Software Foundation (ASF) under one or more contributor
+// license agreements. See the NOTICE file distributed with
+// this work for additional information regarding copyright
+// ownership. Apache Software Foundation (ASF) licenses this file to you under
+// the Apache License, Version 2.0 (the "License"); you may
+// not use this file except in compliance with the License.
 // You may obtain a copy of the License at
 //
-// http://www.apache.org/licenses/LICENSE-2.0
+//     http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing,
+// software distributed under the License is distributed on an
+// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+// KIND, either express or implied.  See the License for the
+// specific language governing permissions and limitations
+// under the License.
 //
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
 package header
 
 import (
@@ -23,7 +26,7 @@ import (
 	"strings"
 )
 
-const CommentChars = "/*#- !"
+const CommentChars = "/*#- !~"
 
 // Check checks the license headers of the specified paths/globs.
 func Check(config *Config, result *Result) error {
diff --git a/pkg/header/config.go b/pkg/header/config.go
index 97a9e2b..f3629d1 100644
--- a/pkg/header/config.go
+++ b/pkg/header/config.go
@@ -1,17 +1,20 @@
-// Copyright © 2020 Hoshea Jiang <ho...@apache.org>
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
+// Licensed to Apache Software Foundation (ASF) under one or more contributor
+// license agreements. See the NOTICE file distributed with
+// this work for additional information regarding copyright
+// ownership. Apache Software Foundation (ASF) licenses this file to you under
+// the Apache License, Version 2.0 (the "License"); you may
+// not use this file except in compliance with the License.
 // You may obtain a copy of the License at
 //
-// http://www.apache.org/licenses/LICENSE-2.0
+//     http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing,
+// software distributed under the License is distributed on an
+// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+// KIND, either express or implied.  See the License for the
+// specific language governing permissions and limitations
+// under the License.
 //
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
 package header
 
 import (
diff --git a/pkg/header/fix/anglebracket.go b/pkg/header/fix/anglebracket.go
new file mode 100644
index 0000000..e027536
--- /dev/null
+++ b/pkg/header/fix/anglebracket.go
@@ -0,0 +1,55 @@
+// Licensed to Apache Software Foundation (ASF) under one or more contributor
+// license agreements. See the NOTICE file distributed with
+// this work for additional information regarding copyright
+// ownership. Apache Software Foundation (ASF) licenses this file to you under
+// the Apache License, Version 2.0 (the "License"); you may
+// not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing,
+// software distributed under the License is distributed on an
+// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+// KIND, either express or implied.  See the License for the
+// specific language governing permissions and limitations
+// under the License.
+//
+package fix
+
+import (
+	"fmt"
+	"io/ioutil"
+	"license-checker/pkg/header"
+	"os"
+	"reflect"
+	"strings"
+)
+
+// AngleBracket adds the configured license header to files whose comment starts with <!--.
+func AngleBracket(file string, config *header.Config, result *header.Result) error {
+	stat, err := os.Stat(file)
+	if err != nil {
+		return err
+	}
+
+	content, err := ioutil.ReadFile(file)
+	if err != nil {
+		return err
+	}
+
+	if !reflect.DeepEqual(content[0:5], []byte("<?xml")) { // doesn't contains xml declaration
+		lines := "<!--\n  ~ " + strings.Join(strings.Split(config.License, "\n"), "\n  ~ ") + "\n-->\n"
+
+		if err := ioutil.WriteFile(file, append([]byte(lines), content...), stat.Mode()); err != nil {
+			return err
+		}
+
+		result.Fix(file)
+	} else {
+		// TODO: tackle with the "xml declaration"
+		return fmt.Errorf("xml with xml declaration is not supported yet")
+	}
+
+	return nil
+}
diff --git a/pkg/header/fix/doubleslash.go b/pkg/header/fix/doubleslash.go
new file mode 100644
index 0000000..ab2819a
--- /dev/null
+++ b/pkg/header/fix/doubleslash.go
@@ -0,0 +1,48 @@
+// Licensed to Apache Software Foundation (ASF) under one or more contributor
+// license agreements. See the NOTICE file distributed with
+// this work for additional information regarding copyright
+// ownership. Apache Software Foundation (ASF) licenses this file to you under
+// the Apache License, Version 2.0 (the "License"); you may
+// not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing,
+// software distributed under the License is distributed on an
+// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+// KIND, either express or implied.  See the License for the
+// specific language governing permissions and limitations
+// under the License.
+//
+package fix
+
+import (
+	"io/ioutil"
+	"license-checker/pkg/header"
+	"os"
+	"strings"
+)
+
+// DoubleSlash adds the configured license header to files whose comment starts with //.
+func DoubleSlash(file string, config *header.Config, result *header.Result) error {
+	stat, err := os.Stat(file)
+	if err != nil {
+		return err
+	}
+
+	content, err := ioutil.ReadFile(file)
+	if err != nil {
+		return err
+	}
+
+	lines := "// " + strings.Join(strings.Split(config.License, "\n"), "\n// ") + "\n"
+
+	if err := ioutil.WriteFile(file, append([]byte(lines), content...), stat.Mode()); err != nil {
+		return err
+	}
+
+	result.Fix(file)
+
+	return nil
+}
diff --git a/pkg/header/fix/fix.go b/pkg/header/fix/fix.go
new file mode 100644
index 0000000..48b3c47
--- /dev/null
+++ b/pkg/header/fix/fix.go
@@ -0,0 +1,52 @@
+// Licensed to Apache Software Foundation (ASF) under one or more contributor
+// license agreements. See the NOTICE file distributed with
+// this work for additional information regarding copyright
+// ownership. Apache Software Foundation (ASF) licenses this file to you under
+// the Apache License, Version 2.0 (the "License"); you may
+// not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing,
+// software distributed under the License is distributed on an
+// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+// KIND, either express or implied.  See the License for the
+// specific language governing permissions and limitations
+// under the License.
+//
+package fix
+
+import (
+	"fmt"
+	"license-checker/internal/logger"
+	"license-checker/pkg/header"
+	"strings"
+)
+
+var suffixToFunc = map[string]func(string, *header.Config, *header.Result) error{
+	".go":        DoubleSlash,
+	".yml":       Hashtag,
+	".yaml":      Hashtag,
+	"Dockerfile": Hashtag,
+	"Makefile":   Hashtag,
+	".gitignore": Hashtag,
+	".md":        AngleBracket,
+}
+
+// Fix adds the configured license header to the given file.
+func Fix(file string, config *header.Config, result *header.Result) error {
+	var r header.Result
+	if err := header.CheckFile(file, config, &r); err != nil || !r.HasFailure() {
+		logger.Log.Warnln("Try to fix a valid file, returning:", file)
+		return err
+	}
+
+	for suffix, fixFunc := range suffixToFunc {
+		if strings.HasSuffix(file, suffix) {
+			return fixFunc(file, config, result)
+		}
+	}
+
+	return fmt.Errorf("file type is unsupported yet: %v", file)
+}
diff --git a/pkg/header/fix/go.go b/pkg/header/fix/go.go
deleted file mode 100644
index c0b5eac..0000000
--- a/pkg/header/fix/go.go
+++ /dev/null
@@ -1,51 +0,0 @@
-// Copyright © 2020 Hoshea Jiang <ho...@apache.org>
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-//
-package fix
-
-import (
-	"io/ioutil"
-	"license-checker/internal/logger"
-	"license-checker/pkg/header"
-	"os"
-	"strings"
-)
-
-func GoLang(file string, config *header.Config, result *header.Result) error {
-	var r header.Result
-	if err := header.CheckFile(file, config, &r); err != nil || !r.HasFailure() {
-		logger.Log.Warnln("Try to fix a valid file, returning:", file)
-		return err
-	}
-
-	stat, err := os.Stat(file)
-	if err != nil {
-		return err
-	}
-
-	content, err := ioutil.ReadFile(file)
-	if err != nil {
-		return err
-	}
-
-	lines := "// " + strings.Join(strings.Split(config.License, "\n"), "\n// ") + "\n"
-
-	if err := ioutil.WriteFile(file, append([]byte(lines), content...), stat.Mode()); err != nil {
-		return err
-	}
-
-	result.Fix(file)
-
-	return nil
-}
diff --git a/pkg/header/fix/hashtag.go b/pkg/header/fix/hashtag.go
new file mode 100644
index 0000000..761acc8
--- /dev/null
+++ b/pkg/header/fix/hashtag.go
@@ -0,0 +1,48 @@
+// Licensed to Apache Software Foundation (ASF) under one or more contributor
+// license agreements. See the NOTICE file distributed with
+// this work for additional information regarding copyright
+// ownership. Apache Software Foundation (ASF) licenses this file to you under
+// the Apache License, Version 2.0 (the "License"); you may
+// not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing,
+// software distributed under the License is distributed on an
+// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+// KIND, either express or implied.  See the License for the
+// specific language governing permissions and limitations
+// under the License.
+//
+package fix
+
+import (
+	"io/ioutil"
+	"license-checker/pkg/header"
+	"os"
+	"strings"
+)
+
+// Hashtag adds the configured license header to the files whose comment starts with #.
+func Hashtag(file string, config *header.Config, result *header.Result) error {
+	stat, err := os.Stat(file)
+	if err != nil {
+		return err
+	}
+
+	content, err := ioutil.ReadFile(file)
+	if err != nil {
+		return err
+	}
+
+	lines := "# " + strings.Join(strings.Split(config.License, "\n"), "\n# ") + "\n"
+
+	if err := ioutil.WriteFile(file, append([]byte(lines), content...), stat.Mode()); err != nil {
+		return err
+	}
+
+	result.Fix(file)
+
+	return nil
+}
diff --git a/pkg/header/result.go b/pkg/header/result.go
index ac35d63..e979154 100644
--- a/pkg/header/result.go
+++ b/pkg/header/result.go
@@ -1,17 +1,20 @@
-// Copyright © 2020 Hoshea Jiang <ho...@apache.org>
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
+// Licensed to Apache Software Foundation (ASF) under one or more contributor
+// license agreements. See the NOTICE file distributed with
+// this work for additional information regarding copyright
+// ownership. Apache Software Foundation (ASF) licenses this file to you under
+// the Apache License, Version 2.0 (the "License"); you may
+// not use this file except in compliance with the License.
 // You may obtain a copy of the License at
 //
-// http://www.apache.org/licenses/LICENSE-2.0
+//     http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing,
+// software distributed under the License is distributed on an
+// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+// KIND, either express or implied.  See the License for the
+// specific language governing permissions and limitations
+// under the License.
 //
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
 package header
 
 import (